[英]how to create an instance of a superclass with attributes?
我有下面的類,我想創建一個名人實例,它也是一個Person並具有age屬性。 據我所知,我很確定morganFreeman是名人,而不是人。 我如何實例化,以便他既是子類又是超類的實例,並且具有兩者的屬性?
class Person(object):
def __init__(self,age):
self.age = age
class Celebrity(Person):
def __init__(self,profession):
super(Celebrity,self).__init__(profession)
morganFreeman = Celebrity("actor")
bob = Person(45)
首先, self.Person = self
是胡說八道; 當然, self
已經是self
。
其次,您的假設是錯誤的。 morganFreeman
既是名人,也是個人。 從定義上講,繼承就是這樣。
您需要在Celebrity
的__init__()
方法中接受age
參數,然后將其傳遞給基類__init__()
:
class Person(object):
def __init__(self,age):
self.age = age
class Celebrity(Person):
def __init__(self, age, profession):
self.profession = profession
super(Celebrity, self).__init__(age)
morganFreeman = Celebrity(55, "actor")
bob = Person(45)
>>> bob = Person(45)
>>> morganFreeman = Celebrity(55, "actor")
>>> morganFreeman.age
55
>>> morganFreeman.profession
'actor'
>>> bob.age
45
>>> bob.profession
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'Person' object has no attribute 'profession'
這表明Celebrity
對象具有age
和profession
屬性,而“ Person
屬性僅具有age
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.