Общий ответ (с примером). Допустим, у нас есть класс Foo
, и мы хотим, чтобы он описал, как он называется:
class Foo(object):
def my_name_is(self):
for name, obj in globals().items():
if obj is self:
print('My name is ' + repr(name))
bar = Foo()
bar.my_name_is()
# prints: My name is 'bar'
Это прекрасно работает, если у вас есть только одна копия этого объекта. Однако, если вы скопируете его, он может иметь несколько имен:
other_bar = bar
other_bar.my_name_is()
# prints two lines: My name is 'other_bar'
# My name is 'bar'