我正试图创造一种相信(在我的无知中)被称为阶级工厂的东西。基本上,我有一个父类,我想采用__init__
参数,并成为几个子类之一。我在StackOverflow here上找到了一个推荐的示例,它看起来像这样:
class Vehicle(object):
def __init__(self, vtype):
self.vtype = vtype
if vtype=='c':
self.__class__ = Car
elif vtype == 't':
self.__class__ = Truck
我heard改变__type__
可能很危险。这种方法有什么负面的方法吗?我使用一个函数动态创建对象,但它不适用于我正在使用的现有代码。它期望我计划进行动态类型更改的类。
谢谢!
答案 0 :(得分:1)
我认为类工厂被定义为返回类(不是实例)的可调用类:
def vehicle_factory(vtype):
if vtype == 'c':
return Car
if vtype == 't':
return Truck
VehicleClass = vehicle_factory(c)
vehicle_instance_1 = VehicleClass(*args, **kwargs)
VehicleClass = vehicle_factory(t)
vehicle_instance_2 = VehicleClass(*args, **kwargs)
答案 1 :(得分:-1)
不要这样做。而是Override __new__()
。