Python 父类方法
我正在尝试编写一个简单的设置来调用父类@classmethod,但是得到了错误…请告诉我这里的问题是什么Python 父类方法,python,Python,我正在尝试编写一个简单的设置来调用父类@classmethod,但是得到了错误…请告诉我这里的问题是什么 class Parent(object): def __init__(self): print "Parent initialized" @classmethod def resource_setup(cls): print "parent method" class Child
class Parent(object):
def __init__(self):
print "Parent initialized"
@classmethod
def resource_setup(cls):
print "parent method"
class Child(Parent):
def __init__(self):
print "Child initialized"
@classmethod
def childmethod(cls):
super(Parent, cls).resource_setup()
print "child method"
c = Child()
Child().childmethod()
输出:
Child initialized
Child initialized
Traceback (most recent call last):
File "C:\Users\ANAND\workspace\Scratch\Scratch\Parent.py", line 30, in <module>
Child().childmethod()
File "C:\Users\ANAND\workspace\Scratch\Scratch\Parent.py", line 25, in childmethod
super(Parent, cls).resource_setup()
AttributeError: 'super' object has no attribute 'resource_setup'
您需要调用
super(Child,cls)
。super
的第一个参数应该是要调用其方法的超类的类,而不是超类本身
你的问题1是无关的。如果您想让子\uuuuu init\uuuu
调用父\uuuu init\uuuu
,则需要使用super
显式执行,就像您使用parentmethod
和childmethod
一样。(也就是说,在子对象的\uuuuu init\uuuuuuuuuuuu()中执行super(子对象,自我)。
当我创建一个子对象c=child()时,我看不到“parent initialized”的显示。我希望父类被初始化
:在Python中,派生类的C++ < C++ > ItITYS> 不调用基类的代码<代码> yIniTyx隐式,需要显式调用它。
如何从子@classmethod调用父方法@classmethod
答:使用super(Child,cls)
而不是super(Parent,cls)
1. When I create a child object c = Child(), I don't see the display of "parent initialized"..I expect the Parent class to be initialized.
2.How can I call the parent method @classmethod from the child @classmethod?