Я пытающийся использовать Dict для управления выбором функции внутри класса, однако, я получаю эту следующую TypeError:Pythonic переключение с использованием функций внутри класса
TypeError: A() missing 1 required positional argument: 'self'
Примера код:
class Tt:
def __init__(self):
pass
def A(self):
print("a")
def B(self):
print("b")
def C(self):
print("c")
a_diction={
'0' : A,
'1' : B,
'2' : C
}
def ad(self,data):
self.a_diction[data]()
Как я могу построить этот переключатель в ad
, чтобы предоставить self
как a_diction
, так и вызванному методу A
, B
и C
?
Да, это работает .... но почему это сработало? логически это должно было быть self. (Self.a_diction [данные])() .. это неправильно я знаю .. , но передача себя в качестве аргумента здесь работает .. почему так? – user3007395
@ user3007395 Можете ли вы опубликовать свой фактический код в вопросе? Код, который находится там, где он находится, не будет работать, даже с этим добавлением. – mfitzp
Это работает, потому что 'someObject.method()' также можно вызвать с помощью синтаксиса 'someClass.method (someObject)'. Точно так же работают 'self.thing()' и 'thing (self)'. – Kevin