改变__type__的后果

时间:2010-10-20 21:42:07

标签: python types factory

我正试图创造一种相信(在我的无知中)被称为阶级工厂的东西。基本上,我有一个父类,我想采用__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__可能很危险。这种方法有什么负面的方法吗?我使用一个函数动态创建对象,但它不适用于我正在使用的现有代码。它期望我计划进行动态类型更改的类。

谢谢!

2 个答案:

答案 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__()