Can pdb print from which base class did the derived class inherit a particular method from
本问题已经有最佳答案,请猛点这里访问。
pdb能否打印派生类从哪个基类继承了特定方法?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | import pdb class A(): def funct(self): print 3 class B(): def funct(self): print 6 class C(A, B): pass b = B(); print b.funct() |
========================
1 2 3 | ? python a.py 3 None |
号
======================
1 2 3 | python -m pdb a.py (Pdb) p c.funct <bound method C.funct of <__main__.C instance at 0x102154440>> |
有没有方法从哪个基类中获取派生类C继承了funct方法?
你必须自己灌输。
您可以将下面的截图放到一个实用函数中,但其思想是:从类中检索类,循环访问
1 | print(list(cls for cls in b.__class__.__mro__ if"funct" in cls.__dict__)) |
(你知道"pdb"与此无关——而且python通常可以在交互模式下工作,对吗?PDB只是进入交互模式的一种方式,尽管与ipython等Python shell相比,PDB资源不足。)
另一个注意事项是:我不知道您在做什么,但您确实应该在python 3.x中尝试这样做,而不是在python 2中。