从列表继承Python

时间:2016-01-27 00:55:46

标签: python inheritance

我刚刚开始学习Python,并创建了以下类,它继承自list:

class Person(list):
    def __init__(self, a_name, a_dob=None, a_books=[]):
        #person initialization code
        list.__init__(a_books)
        self.name = a_name
        self.dob = a_dob

然而,有三件事我不明白:

  1. 此行list.__init__(a_books)并未实际初始化我的实例的图书清单。
  2. 根据这本书的说法,我应该写list.__init__([])。为什么这一步是必要的。
  3. 为什么self中没有list.__init__([])的引用? Python如何知道?

1 个答案:

答案 0 :(得分:0)

您需要制作super call to instantiate the object using the parents __init__ method first

class Person(list):
    def __init__(self, a_name, a_dob=None, a_books=[]):
        #person initialization code
        super(Person, self).__init__(a_books)
        self.name = a_name
        self.dob = a_dob

print Person('bob',a_books=['how to bob'])

Gives the output

['how to bob']

因为list__str__方法。