簡體   English   中英

如何創建具有屬性的超類的實例?

[英]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對象具有ageprofession屬性,而“ Person屬性僅具有age

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM