Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 超级包含类的变量?_Python_Class_Oop_Inheritance - Fatal编程技术网

Python 超级包含类的变量?

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

也许有一种更好的方法可以做到这一点,但总的来说,我有一个泛型类,在实例化时,我想超越另一个类(取决于输入是什么)。几乎在泛型类init中创建一个“路由器”

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的帮助