在python中从派生构造函数调用基构造函数

在python中从派生构造函数调用基构造函数,python,Python,为了执行它,应该做些什么 class parent(): age=None name=None def __init__(self,name,age): self.name=name self.age=age def printout(self): print(self.name) print(self.age) class child(parent): def __init__(self

为了执行它,应该做些什么

class parent():
    age=None
    name=None
    def __init__(self,name,age):
        self.name=name
        self.age=age
    def printout(self):
        print(self.name)
        print(self.age) 

class child(parent):
    def __init__(self,name,age,gender):
        super(parent,self).__init__(self.name,self.age)
        print gender

c=child("xyz",22,"male")
c.printout()
我是python领域的新手,不知道问题出在哪里

super()
只适用于新型类;将
object
添加到
parent
的基类中:

class parent(object):
您可能还需要调整
super()
调用。您需要指定当前类,而不是要开始搜索的父类,
self.name
self.age
在调用
\uuuu init\uuuu
时仍设置为
None
,但您似乎希望传递
name
age
参数:

def __init__(self, name, age, gender):
    super(child, self).__init__(name, age)
    print gender
通过这些更改,代码可以工作:

>>> c = child("xyz", 22, "male")
male
>>> c.printout()
xyz
22
super()
仅适用于新型类;将
object
添加到
parent
的基类中:

class parent(object):
您可能还需要调整
super()
调用。您需要指定当前类,而不是要开始搜索的父类,
self.name
self.age
在调用
\uuuu init\uuuu
时仍设置为
None
,但您似乎希望传递
name
age
参数:

def __init__(self, name, age, gender):
    super(child, self).__init__(name, age)
    print gender
通过这些更改,代码可以工作:

>>> c = child("xyz", 22, "male")
male
>>> c.printout()
xyz
22

您需要从
对象继承
以使
super()
工作,同时
self.name
self.age
在传递给
super()
调用时总是
None

class parent(object):
以及:


您需要从
对象继承
以使
super()
工作,同时
self.name
self.age
在传递给
super()
调用时总是
None

class parent(object):
以及:

super()
仅适用于新样式类(在Python3中,一切都是新样式)。所以你需要

class parent(object):
同样在对super的调用中,第一个参数是子类的名称,而不是父类的名称。子类中的调用应为

super(child, self).__init__(name, age)
super()
仅适用于新样式类(在Python3中,一切都是新样式)。所以你需要

class parent(object):
同样在对super的调用中,第一个参数是子类的名称,而不是父类的名称。子类中的调用应为

super(child, self).__init__(name, age)

是的,已经设置好了;在课堂上。然而,这可能不是OP想要的啊,就在课堂上。谢谢。是的,它们已经设置好了;在课堂上。然而,这可能不是OP想要的啊,就在课堂上。谢谢