簡體   English   中英

如何在實例化python類時更改默認參數?

[英]how to change a default parameter in instantiating a python class?

我有一個可以用兩種不同方式實例化的python類。 我可以創建type1類或type2類。...但是如何在實例化期間僅更改一個特定的默認值呢?

class MyClass:
    DEFAULT_PARAMS = {
        "type_1": {
            "name": "smith",  # Stock name
            "region": "newman",
            "country": "USA"
        },
        "type_2": {
            "age": "34", # Stock name
            "gender": "male",
            "income": "100":
        }
    }

m = MyClass("type_1")
m = MyClass("type_2")

假設我要創建一個類型為type_1的類,但是要將國家/地區更改為(例如CANADA)。...正確的語法是什么?

如果type_1type_2必須都屬於同一個類,那么這似乎是類繼承的一個好用例:

class MyClass:
   pass

class Type1(MyClass):
   def __init__(self, name="smith", region="newman", country="USA"):
       self.name = name
       self.region = region
       self.country = country

class Type2(MyClass):
   def __init__(self, age="34", gender="male", income="100"):
       self.age = age
       self.gender = gender
       self.income = income

您可以覆蓋默認屬性,例如:

x = Type1(country="CANADA")

在這種情況下, Type1Type2的實例也是MyClass實例:

x = Type1(country="CANADA")
print(isinstance(x, MyClass)) # True

y = Type2()
print(isinstance(y, MyClass)) # True

同樣,這只是我的看法,但是我發現ageincome設置得很奇怪。 也許應該改為數字?

class Type2(MyClass):
   def __init__(self, age=34, gender="male", income=100):
       self.age = age
       self.gender = gender
       self.income = income

暫無
暫無

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

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