簡體   English   中英

python 中的切換器給出的 Object 問題

[英]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.

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