使用类中的函数进行Pythonic切换

时间:2014-10-07 15:32:19

标签: python class switch-statement

我正在尝试使用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_dictionA和{{1}提供B }?

2 个答案:

答案 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__中对其进行初始化?然后,您可以选择绑定方法作为字典中的值而不是未绑定的方法。