【发布时间】:2018-02-20 21:59:30
【问题描述】:
我试图通过基于this question/answer 的非常简单的测试用例来更好地理解如何使用子类。
class Outer():
def __init__(self, x):
self.x = super(Inner, self).__init__
# self.x = Inner(**kwargs)
def add_two(self):
""" """
return self.x + 2
class Inner():
def __init__(self, x=2):
self.x = x
res = Outer(x=3).add_two()
# res = Outer({'x' : 3}).add_two()
print(res)
>> NameError: name 'Inner' is not defined
如果我运行相同的代码但将 Inner() 设为自己的单独类(而不是 Outer() 的子类,我会收到以下错误。
TypeError: super(type, obj): obj must be an instance or subtype of type
此错误的原因是什么,我该如何解决?
【问题讨论】:
-
Inner是类的一个属性 - 所以它必须被称为self.Inner。不确定super在这里是否正确 - 您可能只是想实例化它。 -
(去掉“元类”标签,因为这里没有涉及到元类的使用,甚至不解释发生了什么)
标签: python-3.x class oop subclass