我有一个类,我想将某种方法重新分配给同一类的隐藏方法。
就我而言,我有一个通用过滤器,我想分配给特定的实现。
我想将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
答案 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