我想给一个子类一些额外的属性,而不必显式地调用一个新方法。那么有没有一种方法可以给继承的类一个不重写父类的__init__
方法的__init__
类型方法呢?
我编写下面的代码纯粹是为了说明我的问题(因此属性命名不当等)。
class initialclass():
def __init__(self):
self.attr1 = 'one'
self.attr2 = 'two'
class inheritedclass(initialclass):
def __new__(self):
self.attr3 = 'three'
def somemethod(self):
print 'the method'
a = inheritedclass()
for each in a.__dict__:
print each
#I would like the output to be:
attr1
attr2
attr3
谢谢你
只需使用
super
调用父对象的__init__
:我强烈建议遵循Python的命名约定,用大写字母开始一个类,例如
InheritedClass
和InitialClass
。这有助于快速区分类与方法和变量。据我所知,这是不可能的,但是您可以调用超类的init方法,如下所示:
首先你要混合
__init__
和__new__
,它们是different things。__new__
不以实例(self
)为参数,而是以类(cls
)为参数。 至于问题的主要部分,您需要做的是使用super
调用超类__init__
。您的代码应该如下所示:
相关问题 更多 >
编程相关推荐