我试图通过继承来隐式地连接类变量。我能升一级,但不能再升了。。。这真的有可能吗?你知道吗
class Base(object):
def get_crumbs(self):
crumbs = getattr(super(self.__class__, self), 'crumbs', ())
crumbs += getattr(self, 'crumbs', ())
return crumbs
class A(Base):
crumbs = ('un chasseur', )
class B(A):
crumbs = ('sachant chasser', )
class C(B):
crumbs = ('sans son chien', 'est un bon chasseur')
>>> c = C()
>>> c.get_crumbs()
>>> <type 'tuple'>: ('sachant chasser', 'sans son chien', 'est un bon chasseur')
您可以在^{} tuple 上循环:
演示:
旁注:永远不要使用
super(self.__class__, self)
。如果重写get_crumbs()
方法并使用super()
调用原始方法,则会导致无限递归,请参见How to avoid infinite recursion with super()?。改用super(ClassName, self)
或(仅限python3)super()
。你知道吗相关问题 更多 >
编程相关推荐