Python 父类方法

Python 父类方法,python,Python,我正在尝试编写一个简单的设置来调用父类@classmethod,但是得到了错误…请告诉我这里的问题是什么 class Parent(object): def __init__(self): print "Parent initialized" @classmethod def resource_setup(cls): print "parent method" class Child

我正在尝试编写一个简单的设置来调用父类@classmethod,但是得到了错误…请告诉我这里的问题是什么

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?