[英]Python super: calling a base class method which contains another base class method that is overriden by derived class
[英]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.