2013-04-10 3 views
-1

У меня есть определить некоторые функции класса АКак определить имя функции-члена для объекта функции?

, а также в классе А, У меня есть функция для вызова других функций по их имени

Но когда я использую eval('funcname'), он говорит, что функция not defined

Как я могу определить имя функции-члена как объект функции?

ответ

3

Это не совсем ясно из вашего вопроса, но похоже, что вы спрашиваете, как вызвать один метод в классе по имени из другого метода внутри этого класса.

Поскольку все методы экземпляра имеют параметр self, вы можете просто посмотреть метод, который вы хотите на что через getattr:

def call_by_name(self, method_name): 
    method = getattr(self, method_name) 
    method() 
+0

Но он говорит: «AttributeError: экземпляр XXX не имеет атрибута« xxx »« –

+2

Итак, имеет ли этот атрибут? Покажите реальный пример. –

+0

Я понимаю, что функция, которую нужно вызвать, является частной функцией, но я не знаю почему? –

0

следующие работы, но почему вы хотите сделать это?

class A(object): 
    def __init__(self): 
     pass 

    def fa(self): 
     print('Hello') 
    def fb(self): 
#  self.fa() 
     eval('self.fa()') 

a = A() 
a.fb() 
0

Я надеюсь, что это полезно,

Если вы хотите вызвать метод экземпляра здесь путь

class A: 
def foo(self): 
     print " ok" 
     return "ok" 
def bar(self): 
     #i = A() 
     #print eval('i.foo()') 
      print eval('self.foo()') 
a = A() 
a.bar() 

методов являются атрибутами экземпляра не класс атрибутов, поэтому мы должны вызовите методы только через экземпляр.

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