単純化されたコンテキストは次のとおりです。
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
self.vocab
クラスAのリストにすべてのサブクラスのすべてのメソッドを「自動的に」入力し、self.vocab
初期化で定義されたルールに従いたいと思います。したがって、この例では、オブジェクトがインスタンス化されたときに 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__
インスタンス化の前に行う必要があると思うので、 A をメタクラスに変更して代わりに使用する必要があると思います。実際、クラス A は別のコードによってイントロスペクトされています。self.vocab はインスタンス化中に抽出されるため、事前に行う必要があると思います。
どのように進めればよいのか、それが可能かどうかわかりません。