Python-将类变量指针分配给实例方法

时间:2019-12-04 08:51:04

标签: python

我有一个类,我想将某种方法重新分配给同一类的隐藏方法。
就我而言,我有一个通用过滤器,我想分配给特定的实现。
我想将func_map作为类属性而不是实例属性,因为它似乎更具逻辑性。我该怎么办?

class MyClass:
    func_map = {"eq" : __eq_filter}
    def set_filter(self, func):
        self.filter = MyClass.func_map[func]

    def filter(self, value):
        raise NotImplementedError

    def __eq_filter(self, value):
        return self.attribute == value

1 个答案:

答案 0 :(得分:0)

也许使用内置的 @staticmethod 装饰器,根据文档,该装饰器允许将方法绑定到类而不是实例(将方法转换为静态方法):

class MyClass:
    func_map = {"eq" : __eq_filter}
    def set_filter(self, func):
        self.filter = func_map[func]

    def filter(self, value):
        raise NotImplementedError

    @staticmethod
    def __eq_filter(self, value):
        return self.attribute == value

检查文档以获取更多信息:https://docs.python.org/3/library/functions.html#staticmethod