得到如下代码:
class Type:
def __init__(self, index):
self.index = index
class MyCls(Type):
def __init__(self, index):
super(MyCls, self).__init__(index)
尝试编译后 - 在super
行上收到了下一条错误消息:
详细信息名称错误:全局名称' MyCls'未定义
如何定义MyCls
以使上述代码有效?
答案 0 :(得分:3)
您展示的代码段不应触发NameError - 允许类以这种方式引用自己
但是,super
仅适用于新式类 - 尝试实例化MyCls
对象将引发TypeError。要解决此问题,类Type
需要明确继承object
:
class Type(object):
def __init__(self, index):
self.index = index
在这种情况下, MyCls
可以保持原样。然后你有:
>>> a = MyCls(6)
>>> a
<__main__.MyCls object at 0x7f5ca8c2aa10>
>>> a.index
6