Скажем, у меня есть следующий класс, определенный с помощью метода foo
:
class MyClass:
def foo(self):
print "My name is %s" % __name__
Теперь, когда я звоню foo()
Я ожидаю / хочу увидеть это распечатанным
My name is foo
Однако я получаю
My name is __main__
И если бы я поместил определение класса в модуль с именем FooBar
, я бы получил
My name is FooBar
Однако, если я сделаю
m = MyClass()
print m.foo.__name__
Я получаю именно то, что хочу,
My name is foo
Может кто-нибудь помочь объяснить, почему __name__
относится к модулю, а не к имени метода?
Есть ли простой способ получить имя метода?
Большое спасибо