如何创建返回不同对象的类



我正在尝试执行以下操作:

#A wrapper object that based on it's parameters returns other objects
class A():
def __new__(cls, config):
if config.type == "1":
return C(config)
elif config.type == "2":
return D(config)   

你是如何调用这个模式的,在python中又是如何实现的?__new__似乎不接受争论。

__new__确实接受参数,并且它可以用作其他类的工厂,就像您的示例所尝试的那样

类是可调用的。这些对象通常充当新对象的工厂自身的实例,但类类型可能存在变体覆盖new((。调用的参数传递给new((,在典型的情况下,到init[(初始化新实例。

就是一个有效的例子

class C:
def __init__(self, val):
self.what = "C"
print("i am C")
class D:

def __init__(self, val):
self.what = "D"
print("i am D")
class A():
def __new__(cls, config):
if config == "1":
return C(config)
elif config == "2":
return D(config)

foo = A("1")
print(foo.what, type(foo))
bar = A("2")
print(bar.what, type(bar))

最新更新