使用子类的Python错误

时间:2014-11-06 21:10:08

标签: python list class inheritance

你可以告诉我我做错了吗?

这是一个简单的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新手,我真的不知道发生了什么!

2 个答案:

答案 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)