簡體   English   中英

超級包含一個類的變量?

[英]Super a variable which contains a class?

也許總有一種更好的方法可以做到這一點,但是總的來說,我有一個通用類,在實例化時,我想繼承另一個類(取決於輸入的內容)。 幾乎在Generic類的init中創建一個“ router”。

class GenericClass():
    def __init__(self, class_input, var):
        classes = {
            '1': Class1,
            '2': Class2
        }

        return_class = classes.get(class_input)

        # this is the part I can't figure out how to implement
        super().return_class().__init__(var)


class BaseClass(object):
    def __init__(self, var):
        self.var=var

    def method1(self):
        raise NotImplementedError('sub-class should implement this.')

class Class1(BaseClass):
    def __init__(self, var):
        super().__init__(var)

    def method1(self):
        print(self.var)


class Class2(BaseClass):
    def __init__(self, var):
        super().__init__(var)

    def method1(self):
        print(self.var)

也許我只是看錯了方向。 對方法的變化持開放態度。

由於GenericClass實際上從未用作類,因此它甚至不應該成為一個類,只需將其設為常規函數即可,該函數創建並返回指定類的實例。 super()對此return classes[class_input](var) -代碼基本上是return classes[class_input](var)

如果確實需要一個類(例如,它用作您實際要返回的類的基類),則需要重寫__new__() (使用與上述完全相同的代碼)- __init__()為時已晚,無法影響所創建的類。

暫無
暫無

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

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