Python 超级包含类的变量?
也许有一种更好的方法可以做到这一点,但总的来说,我有一个泛型类,在实例化时,我想超越另一个类(取决于输入是什么)。几乎在泛型类init中创建一个“路由器”Python 超级包含类的变量?,python,class,oop,inheritance,Python,Class,Oop,Inheritance,也许有一种更好的方法可以做到这一点,但总的来说,我有一个泛型类,在实例化时,我想超越另一个类(取决于输入是什么)。几乎在泛型类init中创建一个“路由器” class GenericClass(): def __init__(self, class_input, var): classes = { '1': Class1, '2': Class2 } return_class = class
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()
与此无关-代码基本上是返回类[class\u input](var)
如果它确实需要是一个类(例如,它被用作您实际想要返回的类的基类),那么您需要重写
\uuuu new\uuu()
(使用与上述完全相同的代码)-\uu init\uuu()
太晚了,无法影响所创建的类。明白了。我现在明白了\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
!非常感谢。也要感谢@madjaoue的帮助