【发布时间】:2015-04-21 23:59:06
【问题描述】:
我需要调用继承的类以使其内容和方法起作用。但我也有一个类装饰器分配给我的包装类。我有很多包装类,并希望它们尽可能短,这就是我尝试让它工作的原因。
@add_properties
class Item01Object(BaseItemObject):
properties=["quantum","size","mass"]
def __init__(self, name=None):
super(Item01Object, self).__init__(name)
#[...]
@add_properties
class Item02Object(BaseItemObject):
#[...]
但是当我实例化我的类时,我收到以下错误:
File "C:\wrapper.py", line 862, in __init__
super(Item01Object, self).__init__(name)
NameError: global name 'Item01Object' is not defined
想法:
- 使用类变量
properties快速编辑每个“包装”项的属性 -
BaseItemObject提供的基本功能 - 方法很容易被覆盖
- 简短的包装类有一个很好的概述
我怎样才能让它工作??
谢谢。
【问题讨论】:
-
@Martijn:对不起,我编辑了我的问题,现在它得到了错误消息
-
啊……再次抱歉。我最好重读我正在写的东西。现在错误与我在应用程序中的错误相同。
-
发布的代码不会重现该错误。代码中定义了全局
Item01Object;class语句返回一个新类,在通过类装饰器传递后,Python 将名称Item01Object绑定到结果。 -
您的代码做了一些 else 以再次解除该全局绑定。
-
是的,我使用的类装饰器的函数返回值错误。我将再次阅读使用装饰器的文档,我不会再次发布那些简单的错误。无论如何,感谢您的快速回复!
标签: python inheritance wrapper decorator super