我有这样的结构,
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
当我实例化类 Foo() 时,它将返回 Foo 类的实例,但我希望它应该返回 Bar 的实例> 或 Zoo 类(即根据提供给 Foo 类的值调用的任何类)
提前致谢
请您参考如下方法:
只需使用一个函数:
def foo(value=True):
if value:
return Bar()
else:
return Zoo()
不需要类,因为您只想从两个其他 类创建实例。因此,您可以只使用一个函数在两者之间进行选择。
这通常被称为工厂。
如果你想为初始化器提供自定义参数,你可以使用这个:
def foo(value=True):
if value:
return Bar
else:
return Zoo
并这样调用它:
z = foo(True)(params for Bar/Zoo)
