我有一个像,
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,但我希望它应该返回实例Bar或Zoo类(即根据提供给Foo类的值调用的任何类)
提前致谢
只需使用一个功能:
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)
| 归档时间: |
|
| 查看次数: |
111 次 |
| 最近记录: |