2014-08-27 2 views
2

позволяет сказать, у меня есть класс, как:вызова метода/функции из класса переменной

class Foo: 

    foo_list = [{'foo1':foo1,'foo2':foo2}] #issue here..Can't use foo1 or self.foo1 here 

    def __init__(self): 
     pass 

    def run(self): 
    responses = [func() for func_name, func in Foo.foo_list.items()] 

    def foo1(self): 
    return True 

Поэтому в основном я хочу использовать методы класса переменной класса, а .. Как я это сделать? Имею ли я смысл?

+0

Вы хотите статический метод. Попробуйте декодер '' staticmethod' (https://docs.python.org/3/library/functions.html#staticmethod). –

ответ

5

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

class Foo: 

    def run(self): 
     responses = [func(self) for func_name, func in Foo.foo_dict.items()] 

    def foo1(self): 
     return True 

    def foo2(self): 
     return False 

    foo_dict = {'foo1':foo1,'foo2':foo2} 
+1

Справа. Один из скрытых недостатков модели интерпретатора Python. Кажется, я пишу C, иногда! – jpaugh

+0

Ах .. я вижу .. работает .. :) – Fraz

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