0

为了执行它应该做什么

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世界的新手,无法弄清楚问题出在哪里

4

3 回答 3

2

super()仅适用于新式课程;添加object到基类parent

class parent(object):

您可能还想调整您的super()通话。您需要提供当前类,而不是parent开始搜索的类,并且self.name在您被调用时self.age仍然设置为,但您似乎想要传递and参数:None__init__nameage

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

通过这些更改,代码可以工作:

>>> c = child("xyz", 22, "male")
male
>>> c.printout()
xyz
22
于 2013-10-21T09:19:14.267 回答
1

您需要继承 fromobject才能super()工作,self.name并且self.age总是None在您将它们传递给super()调用时。

class parent(object):

和:

super(child, self).__init__(name, age)
于 2013-10-21T09:21:04.983 回答
1

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

class parent(object):

同样在对 super 的调用中,第一个参数是类的名称而不是父类的名称。子类中的调用应该是

super(child, self).__init__(name, age)
于 2013-10-21T09:22:00.200 回答