如何将类方法分配给类属性?
这个问题在这里已经有了答案:
请注意,当您尝试:
class A:
    MAP = {
        'add' : A.add(x, y),
        'subtract' : A.subtract(x, y),
    }
  在名称A存在之前(该类未与名称绑定直到定义完成)以及在名称add存在之前(您尚未定义该方法),您正尝试访问例如A.add 。  类定义顶层的所有内容都按顺序完成。 
在类定义之后 ,您需要将类方法放入字典中(直到定义完成后才能调用它们):
class A:
    MAP = {}
    @classmethod
    def add(cls, x, y):  # note colon
        return x + y
    @classmethod
    def subtract(cls, x, y):  # also here
        return x - y
A.MAP['add'] = A.add
A.MAP['subtract'] = A.subtract
  请注意,因为两个类方法都不使用cls ,所以您可以改为使用@staticmethod 。  或者只是使用函数 -  Python不是Java,你不需要把所有东西都放到一个类中。 
  或者,您可以使用getattr按名称访问属性(包括类方法): 
>>> class A:
        @classmethod
        def add(cls, x, y):
            return x + y
        @classmethod
        def subtract(cls, x, y):
            return x - y
>>> getattr(A, 'add')(1, 2)
3
请不要使用python编程,而应使用更标准的oop方法,例如:
#!/usr/bin/env python
class A:
    def __init__(self):
        pass
    @classmethod
    def add(self, x, y):
        return x + y
    @classmethod
    def subtract(self, x, y):
        return x - y
if __name__ == "__main__":
    a = A()
    print a.add(1,2)  # ans: 3
    print a.subtract(2,1) # ans: 1
