Ну я пытаюсь сделать это:Ошибка пропускание имени методы в качестве аргумента в методе класса
class Foo(object):
def method1(self):
print "method1"
def method2(self):
print "method2"
class Fo1(object):
def __init__(self):
self.a = Foo()
def classMethod(self, selection):
self.a.selection()
A = Fo1()
A.classified('method2')
Я получил эту ошибку:
--> AttributeError: 'Fo1' object has no attribute 'selection'
Я не хочу использовать это (мне кажется, больше кодирования):
def classified(self,selection):
if selection == "method1": self.a.method1()
elif selection == "method2": self.a.method2()
Как мне закодировать метод, чтобы я мог пройти имя метода в качестве аргумента? Спасибо!
'getattr (self.a, selection)()'. –
Существует редко причина на самом деле делать это. Вы можете передать ссылку на метод напрямую: 'A.classMethod (Foo.method2)' – chepner
, который вы называете классифицированным, где вы, похоже, называете classMethod. то есть вы используете classMethod и классифицируете взаимозаменяемо. выберите одно имя. – dbliss