【发布时间】:2015-09-06 12:22:04
【问题描述】:
我正在尝试在 python 中使用 super 扩展我的类初始化。在下面的示例中,我希望 Class A 初始化乘以 4 的参数,并且我希望此参数通过继承在 B 类中可用。然后我希望 B 中的另一个初始化采用相同的参数并将其乘以 8。第二次初始化不必在 A 中可用。
class A():
def __init__(self,parameter):
self.initialize_parameter=4*parameter
class B(A):
def __init__(self,parameter): #note this parameter is intended to be the same parameter from Class A
self.another_parameter=parameter*8
super(B,self).__init__(parameter)
我一直在阅读的文档似乎表明以上是正确的语法(我认为),但是关于这个主题的文档相当混乱。以上代码返回TypeError: must be type, not classobj。
这是我第一次使用继承,谁能指出我做错了什么?
【问题讨论】:
-
FWIW,更常见的做法是调用超级
__init__(如果你需要调用它)作为子__init__中的第一个命令,而不是在最后这样做。这样子初始化器就更容易覆盖或增加由超级初始化器完成的工作。
标签: python inheritance super