クラスが完全に構築される前に呼び出されるメソッドでスーパー・ライクな動作を実装する方法を教えてください。このような一連の独立したメソッドを実装できますか? setup_class
が呼び出されたときB
が適切に存在しないためクラス構築中にメソッド継承を適切に実装する
from six import with_metaclass
class Meta(type):
"""a metaclass"""
def __init__(cls, name, bases, classdict):
cls.setup_class()
def setup_class(cls):
pass
class A(with_metaclass(Meta, object)):
"""a class"""
@classmethod
def instantiate(cls, name):
print("instantiating through '%s'" % name)
@classmethod
def setup_class(cls):
cls.instantiate('A')
class B(A):
@classmethod
def setup_class(cls):
super(B, cls).setup_class()
cls.instantiate('B')
class C(B) pass
これは明らかに、しかし動作することはできません。