首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python:递归结构

Python:递归结构
EN

Stack Overflow用户
提问于 2016-07-22 11:09:18
回答 2查看 333关注 0票数 0

我对节俭代码生成器或python有问题。

代码示例(由节俭生成):

代码语言:javascript
复制
class SomeClass:
    spec = (
            (1, (SomeClass, SomeClass.spec)),
    )

错误消息:

代码语言:javascript
复制
NameError: name 'SomeClass' is not defined

因此,我在节俭的jira中找到了错误 (自2014年以来仍在运营)。建议的解决方案很糟糕。

我能设法避免这个问题吗?

在最好的情况下,*.thrift或*.py文件中的解决方案可以在生成之前或之后手动更改。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-07-22 13:37:56

似乎,python的genered代码包含无用的字段

代码语言:javascript
复制
SomeClass.spec

所以我就把它删除了。

我将此与java生成的代码进行了比较。

--如果有人使用我的解决方案--不要忘记改变生成的方法,那就是检查,当您的规范!=None

票数 0
EN

Stack Overflow用户

发布于 2016-07-22 11:48:20

尝试用以下代码片段替换代码,注意:它使用列表而不是元组,因为元组是不可变的。

代码语言:javascript
复制
class SomeClass:
    spec = None
    @classmethod
    def init(cls):
        cls.spec = []
        cls.spec.append( [ 1 , (cls, cls.spec) ] )

SomeClass.init()

print( SomeClass.spec )       # [[1, (<class SomeClass>, [...])]]

另一种没有类方法的解决方案

代码语言:javascript
复制
class SomeClass:
    spec = None

SomeClass.spec = []
SomeClass.spec.append( [ 1 , (SomeClass, SomeClass.spec) ] )

print( SomeClass.spec )       # [[1, (<class SomeClass>, [...])]]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38524949

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档