我刚刚开始学习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
然而,有三件事我不明白:
list.__init__(a_books)
并未实际初始化我的实例的图书清单。list.__init__([])
。为什么这一步是必要的。self
中没有list.__init__([])
的引用? Python如何知道?答案 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'])
['how to bob']
因为list
有__str__
方法。