2015-01-05 3 views
1

У меня есть метод, который возвращает свое собственное имя. Метод выглядит следующим образом:Как получить динамически созданное имя метода

import inspect 
class example(object): 
    def getvalue(self): 
     return inspect.stack()[0][3] #returns current method's name 

Теперь я создаю метод, похожий на этот класс, таким образом.

import inspect 
class example(object): 
    def getvalue(self): 
     return inspect.stack()[0][3] #returns current method's name 

if __name__=="__main__": 
    e = example() 
    e.method=e.getvalue 
    print e.method() 

Это дает выходное значение getvalue. Теперь я хочу, чтобы мой метод getvalue() возвращал метод динамического метода, созданного мной i.e. Есть ли способ сделать это в python? Если да, то какие изменения мне нужно сделать в моем методе getvalue(), чтобы он возвращал имя динамически созданного метода.

import inspect 
class example(object): 
    def getvalue(self): 
     return inspect.stack()[0][3] #what to write here... 

ответ

4

Это невозможно.

В Python тот же объект может иметь несколько «имен», и поэтому не имеет смысла говорить о «имени» объекта.

Методы - это объекты, а компилятор для функций и методов хранит «имя», обнаруженное при компиляции в поле __name__. Если позже вы перемещаете объект и размещаете его в местах, доступных с помощью других имен, то поле __name__, которое оно имеет, не изменится.

+0

oh thanq для информации –

Смежные вопросы