コードをコンパイルしない答えは、pysmellなどを使用することです。
与えられた:
# base.py
class Base(object):
def __init__(self, name):
self.name = name
class First(Base):
def __init__(self, name="first"):
super(First, self).__init__(name)
class Second(First):
def __init__(self, name="second"):
super(Second, self).__init__(name)
class Third(Second):
def __init__(self, name="third"):
super(Third, self).__init__(name)
t = Third()
を実行pysmell base.py
すると、次のような PYSMELLTAGS ファイルが生成されます。
{'CLASSES': {'base.Base': {'bases': ['object'],
'constructor': ['name'],
'docstring': '',
'methods': [],
'properties': ['name']},
'base.First': {'bases': ['base.Base'],
'constructor': ["name='first'"],
'docstring': '',
'methods': [],
'properties': []},
'base.Second': {'bases': ['base.First'],
'constructor': ["name='second'"],
'docstring': '',
'methods': [],
'properties': []},
'base.Third': {'bases': ['base.Second'],
'constructor': ["name='third'"],
'docstring': '',
'methods': [],
'properties': []}},
'CONSTANTS': ['base.t'],
'FUNCTIONS': [],
'HIERARCHY': ['base'],
'POINTERS': {}}
これは、OPが他のクラスから派生したクラスを認識するという目標を達成するのに役立つと思います。