【发布时间】:2015-03-28 01:17:51
【问题描述】:
我想要一个类,它根据传递给构造函数的参数添加混入。这是我尝试过的:
class MixinOne(object):
def print_name(self):
print("{} is using MixinOne.".format(self.name))
class MixinTwo(object):
def print_name(self):
print("{} is using MixinTwo.".format(self.name))
class Sub(object):
def __new__(cls, *args, **kwargs):
mixin = args[1]
if mixin == 'one':
bases = (MixinOne,) + cls.__bases__
elif mixin == 'two':
bases = (MixinTwo,) + cls.__bases__
return object.__new__(type('Sub', bases, dict(cls.__dict__)))
def __init__(self, name, mixin):
print('In Sub.__init__')
self.name = name
唯一的问题似乎是 __init__ 没有被调用,所以 print_name 方法不起作用。
- 如何让
Sub上的__init__触发?
或
- 有没有更好的方法来做到这一点?
【问题讨论】: