Примечание. Я не считаю это дубликатом таких вопросов, как Перечислить все базовые классы в иерархии данного класса?, потому что у меня нет возможности создавать экземпляры классов во время выполнения. Основное внимание здесь уделяется статическому анализу, а не динамическому.
Я использую инструмент Jedi для статического анализа внутреннего исходного кода. Могу ли я использовать его, чтобы определить все классы, от которых наследуется данный класс?
Например, вот сценарий с именем utils.py
:
class UtilBase:
pass
class SampleUtil(UtilBase):
pass
Вот код для его приема:
import jedi
script = jedi.Script('utils.py')
names = script.get_names()
sample = names[1]
# shows "utils"
print(sample.parent())
# shows "SampleUtil()"
print(sample.get_signatures()[0].to_string())
Я хочу получить имя UtilBase от sample
.