为了执行它应该做什么
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世界的新手,无法弄清楚是什么问题
答案 0 :(得分:2)
super()
仅适用于新式类;将object
添加到parent
的基类:
class parent(object):
您可能还想调整super()
来电。您需要提供当前类,而不是parent
类来开始搜索,self.name
和self.age
仍然设置为None
调用__init__
的时间,但您似乎想要传递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
答案 1 :(得分:1)
您需要继承object
才能使super()
工作,self.name
和self.age
在将None
传递给super()
时始终为class parent(object):
调用。
super(child, self).__init__(name, age)
和
{{1}}
答案 2 :(得分:1)
super()
仅适用于新样式类(在Python3中,一切都是新样式)。所以你需要
class parent(object):
同样在调用super时,第一个参数是子类的名称,而不是父类。子类中的调用应该是
super(child, self).__init__(name, age)