pdb可以打印派生类从哪个基类继承特定方法

时间:2017-10-25 23:04:52

标签: python pdb

pdb可以打印派生类从哪个基类继承特定方法吗?

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()

===================================

☺ python a.py
3
None

======================================

python -m pdb a.py
(Pdb) p c.funct
<bound method C.funct of <__main__.C instance at 0x102154440>>

有没有办法从哪个基类中获取,派生类C继承了funct方法?

1 个答案:

答案 0 :(得分:1)

你必须亲自指导。

你可以把剪切的波纹管放在一个实用函数中,但想法是:从类中检索类,迭代__mro__属性,并在每个类中检查所需的函数或属性在__dict__

print(list(cls for cls in b.__class__.__mro__ if "funct" in cls.__dict__))

(你知道“pdb”与此无关 - 并且Python通常可以在交互模式下工作,对吧?PDB只是进入交互模式的一种方式,虽然与Python相比资源较差贝壳像ipython。)

作为第二个注释:我不知道你在做什么,但你真的应该尝试在Python 3.x中,而不是Python 2。