我在Python中有一个简单的mixin结构。代码应该是自我解释:如何改进Python中的mixin结构?
class Base:
def __init__(self):
pass
class MixinA:
def __init__(self):
self.x = 0
self.y = 1
def a(self):
print('A: x = ' + str(self.x) + ', y = ' + str(self.y))
class MixinB:
def __init__(self):
self.x = 2
self.z = 3
def b(self):
print('B: x = ' + str(self.x) + ', z = ' + str(self.z))
class MyFirstMix(MixinA, MixinB, Base):
def __init__(self):
Base.__init__(self)
MixinB.__init__(self)
MixinA.__init__(self)
class MySecondMix(MixinA, Base):
def __init__(self):
Base.__init__(self)
MixinA.__init__(self)
我想改善这一点,所以这导致了3个问题/问题:
MixinA
和MixinB
都有一个成员x
。有没有办法确定,每个班级只能看到自己的x据我所知:不,不是。- 为混合类中的每个mixin调用构造函数有点麻烦。有没有办法自动调用所有的构造函数或做一些具有相同效果的东西?
- 有没有一种方法可以动态地混入一些内联的东西,而不需要明确地创建一个类?我正在寻找一个语法,如:
mix = Base() with MixinA
如果我的建议结构是完全错误的,我也打开其他建议如何处理mixin。
[在Python中阻止函数重写](http://stackoverflow.com/questions/3948873/prevent-function-overriding-in-python)可能的重复。您可以使用此处提及的类似技术来防止重写实例属性。 –
@NoctisSkytower:那么,问题2和3的含义是什么? – Michael
那些可能并可能应该作为单独的问题发布。 –