[英]problem with Object given by switcher in python
當我嘗試創建 object 其中 class 取決於輸入時,我似乎遇到了開關式代碼的問題。
假設有兩個類,Class1 和 Class2。 他們兩個,當我創建一個 object 時,給我一條消息“創建了 Class<1 或 2> 的對象”然后有這個新的 class 有一個方法在我創建 ZA8CFDE6331BD59EB2AC96F8911C4B66 時采用字符串這個字符串是“Class1”或“Class2”。
這里是棘手的部分:基於這個字符串,我創建了一個 object Class1 或一個 object Class2 如下:
def type_to_object(self, type):
switcher = {
"Class1": Class1(),
"Class2": Class2(),
}
return switcher.get(type, "Invalid Class")
現在,這在類似情況下效果很好。 這里的問題是它似乎同時創建了兩個對象,即使我在調用該方法時只得到了一個(顯然)。 我這樣說是因為參考我上面所說的,我同時收到消息“已創建 Class1 的對象”和“已創建 Class2 的對象”
先感謝您
PS:看起來超級奇怪的是,它不應該輸入所有的case,只有一個等於type
問題是您在切換器字典中創建了兩個類的實例。
試試這個:
class Class1:
def __init__(self):
self.who_am_i = "Class1"
class Class2:
def __init__(self):
self.who_am_i = "Class2"
def type_to_object(class_type):
switcher = {
"Class1": Class1, # No parentheses here, we don't want an instance. Just a type
"Class2": Class2, #
}
selected_class = switcher.get(class_type, None)
if selected_class is None:
raise RuntimeError("Invalid Class")
return selected_class() # Now, we use parentheses: we want to create an instance
c = type_to_object("Class1")
print(c.who_am_i)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.