[英]How to pass arguments to parent class with inheritance and with super keyword?
我的程序如下所示:
class BioData:
def __init__(self, FirstName, LastName):
self.FirstName = FirstName
self.LastName = LastName
class BioData_OP(BioData):
def __init__(self, age, address):
super().__init__(FirstName,LastName)
self.age = age
self.address = address
mydata = BioData_OP(36,"CNGF","Big","Bee")
我收到一個錯誤。 我知道如果我通過兩個 arguments 它不會給我一個錯誤,但在這種情況下我怎么能得到名字和姓氏?
我不想在 class BioData_OP
中初始化它們的值。 我需要為 BioData 創建一個單獨的 object 嗎? 如果是,那么使用 inheritance 或super
關鍵字有什么好處。
inheritance的要點是表示某個class(ex. Dog
)與父class(ex. Animal
)有“是”的關系。 因此, Dog
是一種Animal
,但具有只有狗才有的某些屬性(或僅適用於狗)。
class Animal:
def __init__(self, name):
self.name = name
class Dog(Animal):
def __init__(self, name, breed):
super().__init__(name)
self.breed = breed
a_dog = Dog("woolfie", "labrador")
在這里, __init__
仍然采用name
,但也采用特定於狗的額外屬性,例如breed
。 對於公共屬性name
,您可以將其傳遞給帶有super
的父 class 。
因此,將其應用於您的代碼,我假設BioData_OP
object是一種BioData
,但添加了age
和address
屬性。 __init__
可能仍應接受相同的名字和姓氏,但只是為age
和address
添加了參數。
class BioData:
def __init__(self, first_name, last_name):
self.first_name = first_name
self.last_name = last_name
class BioData_OP(BioData):
def __init__(self, first_name, last_name, age, address):
super().__init__(first_name, last_name)
self.age = age
self.address = address
mydata = BioData_OP("Big","Bee", 36,"CNGF")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.