我在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
那些可能並可能應該作爲單獨的問題發佈。 –