我正在尝试使用dict来控制类中的函数选择,但是,我得到以下TypeError:
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
和{{1}提供B
}?
答案 0 :(得分:3)
错误消息表明您缺少参数。我建议加一个论点。
self.a_diction[data](self)
答案 1 :(得分:1)
你可以这样做吗?
class Tt:
def __init__(self):
self.a_diction = {
0: self.A,
1: self.B,
2: self.C
}
def A(self):
print("a")
def B(self):
print("b")
def C(self):
print("c")
def ad(self,data):
self.a_diction[data]()
即,将a_diction
设为实例属性并在__init__
中对其进行初始化?然后,您可以选择绑定方法作为字典中的值而不是未绑定的方法。