有没有一种方法可以在运行时或通过静态分析实际确定给定python类的method resolution order?
想象一下,我有一组课程
class A():
...
class B(A):
...
class C(A):
...
class D(B, C):
def print_mro(self):
print("D, B, C, A")
我想找出它们的C3线性化,而不必通过源代码,并尝试手动确定顺序。我正在开发一个django应用程序,其中的视图有很多混合使用,而这些混合使用时间已经非常随意。我需要确保它们的顺序正确,出于安全考虑,我不想这样做 手工检查我的工作并冒数据泄漏的风险。我也不想手工完成并为每个mixin的调度方法添加打印声明。
答案 0 :(得分:1)
怎么样?
class A():
pass
class B(A):
pass
class C(A):
pass
class D(B, C):
def print_mro(self):
print(self.__class__.__mro__)
d = D()
d.print_mro()
答案 1 :(得分:0)
您也可以做到
d = D()
print(help(d))