受@Raymond Hettinger的“Super-considered-Super”blogpost和talk的启发,我已经成为Python中合作多重继承的超级粉丝。你知道吗
然而,并不是每个人都知道python中的这个特性,而且经常需要使用不能修改的代码(第三方等)。这给游戏带来了许多不合作的玩家,也就是说,这些类不能很好地调用super
。你知道吗
一个不合作的基类可以通过把它放在MRO
的末尾来管理:
class External1(object):
"""Nobody touch this code!"""
def __init__(self, *args, **kwargs):
self.important = "super"
class MyClass(MyCooperativeClass,External1):
pass
如何将此模式扩展到多个类,例如确保调用所有__init__(*args,**kwargs)
?你知道吗
class External2(object):
"""Nobody is touching this file!"""
def __init__(self, *args, **kwargs):
self.main_functionality = 5 # Chosen by dice roll, guaranteed to be random
class MyChild(MycooperativeClass, External1, External2):
pass
有没有办法在不合作的课堂上增加合作性?你知道吗
在您链接的博客文章中,他描述了如何使用适配器来实现结果。例如,您可以这样做:
相关问题 更多 >
编程相关推荐