这是一个简单的Python子类创建人的代码,只是添加名称,我想要另一个类告诉我他租过的电影,我现在刚开始
class Person(object):
def __init__(self,name):
self.name = name
class Customer(Person):
def __init__(self):
self.movie = []
super(Customer,self).__init__()
但是当我尝试使用我的代码时出现此错误
Johnny = Customer("John")
Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
Johnny = Customer("John"
TypeError: __init__() takes exactly 1 argument (2 given)
我是Python新手,我真的不知道发生了什么!
答案 0 :(得分:2)
假设您的代码实际上是这样的:
class Person(object):
def __init__(self,name):
self.name = name
class Customer(Person):
def __init__(self):
self.movie = []
super(Customer,self).__init__()
Johnny = Customer("John")
您应修改Customer
类初始值设定项,以便它还需要name
个参数。别忘了在super
期间通过它。
class Customer(Person):
def __init__(self, name):
self.movie = []
super(Customer,self).__init__(name)
答案 1 :(得分:1)
您已将Person(Person.__init__
)的构造函数定义为采用名为name
的单个(非自我)参数:
class Person(object):
def __init__(self,name):
self.name = nameclass
但是当您从派生类构造函数Person.__init__
调用Customer.__init__
时,您没有为该参数提供值。因为Person在其构造函数中需要name
,所以在调用它时需要为它提供一个值。
class Customer(Person):
def __init__(self,name):
self.movie = []
super(Customer,self).__init__(name)