модулях)
Мне нужно, чтобы на инициализации у всех детей A сохранялся в атрибут путь к модулю, в котором они содержатся. Но трабл в том, что __file__ даёт именно путь к модулю A, даже если self -- это один из детей A.
Знает ли кто-нибудь некостыльный метод такое реализовать, или это тупая идея?
Зачем это нужно?
может через дескриптор попытаться решить
from three import A from second import B from sys import modules class C(B): pass a = modules.get(A.__module__).__file__ b = modules.get(B.__module__).__file__ c = modules.get(C.__module__).__file__ if __name__ == "__main__": print(a) print(b) print(c) Попробуй так, если я правильно понял задачу
a.py import importlib class A: def get_path(self): return self.path def init(self): m = importlib.import_module(self.module) self.path = m.file b.py from a import A class B(A): pass main.py from a import A from b import B if name == 'main': a = A() b = B() print(a.get_path()) print(b.get_path()) out .../a.py .../b.py
Inspect чуть короче решил все проблемы
Обсуждают сегодня