我正在编写一个代码,其中有一个名为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(...)
答案 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()