从基类pdb,获取派生类的方法

时间:2018-03-10 21:25:40

标签: python debugging inheritance pdb

我需要在基类中使用pdb.set_trace()。它有一个方法:

def run(self, *args, **kwargs):
    raise NotImplementedError

由于这个基类是由许多子类派生的,所以我事先并不知道哪个类是什么?我需要进入run()方法。还有一些对run()方法的参数进行预处理。 所以当pdb到达该行时,

q=self.run(arguments)

我点击了s,就好像我已经发出命令next一样。

如何进入派生类'使用pdb run()方法并在那里调试代码?

1 个答案:

答案 0 :(得分:0)

如果这个例子满足你的问题,那就完全没问题了:

<强> base.py:

class basebase():
    print("something")
    def fun(self):
        print("hello")
    def getobj(obj):
        obj.fun()
print("run")

<强> intermediate.py:

from base import basebase
class inter(basebase):
    print("nothing")

<强> derived.py:

from intermediate import inter
class der(inter):
    def fun(self):
        print("world")

<强> main.py:

from derived import der
from base import basebase
obj=der()
basebase.getobj(obj)

现在只需将pdb.set_trace添加到getobj()方法即可。问题解决了!