/ / Вземете името на променливата чрез 'self' вътре в метод на клас в Python - python, python-3.x

Получете името на променливата чрез "самостоятелно" вътре в метода на класа в Python - python, python-3.x

Имам следния код:

class A:
def m(self):
print(...) # "my_var" should be printed

my_var = A()
my_var.m()

Какъв код трябва да напиша вътре m да изведе името на създадената променлива? Имам нужда от решение за Python 3.

Отговори:

1 за отговор № 1

Обектите не знаят какви променливи в пространството на имена иматда бъдат обвързани в даден момент. Такива променливи имат препратка към обекта, но обектът не поддържа задна препратка към потенциално много променливи. Импортираните модули са изброени в sys.modules и можете да сканирате тези за вашия обект. Това би уловило променливи на ниво модул, но не и всяко пространство за имена на контейнер, клас, клас или локална функция, което се случва да съдържа и променливата.

test1.py - Осъществява клас, който сканира за себе си в известни модули

import sys

class A:

def m(self):
for name, module in sys.modules.items():
try:
for varname, obj in module.__dict__.items():
if obj is self:
print("{}.{}".format(name, varname))
except AttributeError:
pass

a = A()

test2.py - тества кода

import test1

my_a = test1.a
my_a.m()

изпълнявайки кода

$ python3 test2.py
__main__.my_a
test1.a