有没有办法捕获哪些子类在python中调用了超类的方法?

时间:2015-11-27 14:55:34

标签: python inheritance subclass superclass super

我正在编写一个代码,其中有一个名为Soft_Constr的超类,按以下方式制作:

def __init__(self, prop, name, static_init, static_lit, pred, kind):
    init_method ...

def evaluate_clause(self):
    code here

还有一些子类可以调用超类中定义的方法'evaluate_clause'。有没有办法捕获哪些子类在Soft_Constr类中调用'evaluate_clause'?

def evaluate_clause(self):
    subclasses = method_to_get_subclasses(...)

1 个答案:

答案 0 :(得分:1)

这是Python 2的一个例子:

class SuperClass(object):
  def callername(self):
    print self.__class__.__name__

class ChildClass(SuperClass):
  def test(self):
    self.callername()

o = ChildClass()
o.test()

我过去经常使用它来识别用于记录目的的测试类。非常有用。

Python 3没有太大区别:

class SuperClass():
  def callername(self):
    print(self.__class__.__name__)

class ChildClass(SuperClass):
  def test(self):
    self.callername()

o = ChildClass()
o.test()