将父类的self更改为subClass

Pro*_*ons 1 python class self

我有一个像,

class Foo(object):
    def __init__(self, value=True):
        if value:
            Bar()
        else:
            Zoo()
    pass

class Bar(Foo):
    pass

class Zoo(Foo):
    pass




z = Foo(True)  # instance of Foo() class
Run Code Online (Sandbox Code Playgroud)

当我实例化类时Foo(),它将返回类的实例Foo,但我希望它应该返回实例BarZoo类(即根据提供给Foo类的值调用的任何类)

提前致谢

pha*_*t0m 7

只需使用一个功能:

def foo(value=True):
    if value:
        return Bar()
    else:
        return Zoo()
Run Code Online (Sandbox Code Playgroud)

不需要类,因为您只想从其他两个类创建实例.因此,您可以使用函数在两者之间进行选择.

这通常被称为工厂.


如果您希望能够为初始化程序提供自定义参数,可以使用以下命令:

def foo(value=True):
    if value:
        return Bar
    else:
        return Zoo
Run Code Online (Sandbox Code Playgroud)

并称之为:

z = foo(True)(params for Bar/Zoo)
Run Code Online (Sandbox Code Playgroud)