這裏添加一個方法是簡化背景: 自動填充類列表時,我在子類中
class A(object):
def __init__(self):
self.vocab = [
('method1', self.method1),
('method2', 'arg2', self.method2),
('method3', self.method3),
]
class SubA(A):
def method4(self):
pass
def method5(self, arg5):
pass
class SubB(A):
def method6(self):
pass
def method7(self):
pass
我想「自動」填寫從A級的所有self.vocab
名單方法從所有子類中按照self.vocab
初始化中定義的規則進行。所以在這個例子中,我想在object是instanciate時自動添加method4,...,method7。 所以self.vocab變爲:
self.vocab = [
('method4', self.method4),
('method5', 'arg5', self.method5),
('method6', self.method6),
('method7', self.method7),
('method1', self.method1),
('method2', 'arg2', self.method2),
('method3', self.method3),
]
我想我需要更改成元類和使用__new__
,而不是因爲我認爲它必須instanciation前完成。實際上,A類被另一個代碼所反省。 self.vocab是在實例化過程中提取的,這就是爲什麼我認爲它必須在之前完成的原因。
我不知道如何進行,如果可能的話。
+1檢查模塊。我會看到更多的細節,我回來了。 – Katsu
你終於提出了這個問題(在init中是'self .__ class__')。但事實上,檢查必須在導入模塊(類)之後和實例之前完成。但這是我以後會發表的另一個問題。 – Katsu