[英]Python: How to set default value for a attribute in child class
我正在研究 Python,我已經定義了一個 Parent 類,如下所示
class Country:
"""Models countries"""
def __init__(self, name, population, continent, zone):
"""Initiates the Country class"""
self.na = name
self.co = continent
self.zo = zone
self.po = population
我還在這個類中定義了兩個方法。 我創建了一個名為 Europe_country 的子類,我想在其中將 continent 和 zone 的默認值分別設置為“Europe”和“Temperate”。
我試過這樣做
class Europe_country(Country):
"""Models European countries specifically"""
co = 'Europe'
zo = 'Temperate'
europe_1 = Europe_country('Abc', 999)
但顯然我錯了。 我無法在互聯網上找到解決此問題的方法。 請幫忙。
我會做這樣的事情:
class Country:
"""Models countries"""
def __init__(self, name, population, continent, zone):
"""Initiates the Country class"""
self.na = name
self.co = continent
self.zo = zone
self.po = population
class Europe_country(Country):
"""Models European countries specifically"""
def __init__(self, name, population):
super().__init__(name, population, "Europe", "Temperate")
europe_1 = Europe_country('Abc', 999)
使用預定義的值調用父構造函數並從子構造函數設置其余部分。
您的子類只接受 2 個輸入,因此您需要覆蓋父類的__init__
以僅接受 2 個輸入,然后您可以調用父類的init傳遞您的兩個輸入和您的設置值。
class Country:
"""Models countries"""
def __init__(self, name, population, continent, zone):
"""Initiates the Country class"""
self.na = name
self.co = continent
self.zo = zone
self.po = population
class Europe_country(Country):
"""Models European countries specifically"""
co = 'Europe'
zo = 'Temperate'
def __init__(self, name, population):
super().__init__(name, population, self.co, self.zo)
europe_1 = Europe_country('Abc', 999)
只需使用super
強制初始化基類,同時在子類中獲取其他 2 個參數:
class Europe_country(Country):
"""Models European countries specifically"""
def __init__(name, population):
super().__init__(name, population, "Europe", "Temperate")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.