Python 在类构造过程中正确实现方法继承
如何在类完全构造之前调用的方法中实现超级类行为。我可以实现这样一系列相互依赖的方法吗Python 在类构造过程中正确实现方法继承,python,inheritance,super,metaclass,Python,Inheritance,Super,Metaclass,如何在类完全构造之前调用的方法中实现超级类行为。我可以实现这样一系列相互依赖的方法吗 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_metacl
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
显然,这是行不通的,因为调用setup\u class
时,B
并不正确存在
from six import with_metaclass
class Meta(type):
"""a metaclass"""
def __init__(cls, name, bases, classdict):
print("Beginning '%s' setup" % name)
cls.setup_class()
print("Finished '%s' setup \n" % name)
def setup_class(cls):
cls.attribute = 0
cls.instantiate('Meta')
class AMeta(Meta):
def setup_class(cls):
super(AMeta, cls).setup_class()
cls.instantiate('A')
def instantiate(cls, name):
print("instantiating through '%s'" % name)
class A(with_metaclass(AMeta, object)): pass
class BMeta(AMeta):
def setup_class(cls):
super(BMeta, cls).setup_class()
cls.instantiate('B')
class B(with_metaclass(BMeta, object)): pass
class C(B): pass
如果有人想更彻底地研究一下,我相信有人会很感激的