在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想要的啊,就在课堂上。谢谢