gpt4 book ai didi

python - 如何在类属性中存储函数?

转载 作者:太空狗 更新时间:2023-10-30 02:30:13 25 4
gpt4 key购买 nike

在我的代码中有一个类,其中一个方法负责过滤一些数据。为了允许对后代进行自定义,我想将过滤函数定义为类属性,如下所示:

def my_filter_func(x):
return x % 2 == 0

class FilterClass(object):

filter_func = my_filter_func

def filter_data(self, data):
return filter(self.filter_func, data)

class FilterClassDescendant(FilterClass):

filter_func = my_filter_func2

但是,这样的代码会导致 TypeError,因为 filter_func 接收“self”作为第一个参数。处理此类用例的 pythonic 方法是什么?也许,我应该将我的“filter_func”定义为常规类方法?

最佳答案

您可以将其添加为普通的旧属性吗?

def my_filter_func(x):
return x % 2 == 0

class FilterClass(object):

def __init__(self):
self.filter_func = my_filter_func

def filter_data(self, data):
return filter(self.filter_func, data)

或者,强制它成为静态方法:

def my_filter_func(x):
return x % 2 == 0

class FilterClass(object):

filter_func = staticmethod(my_filter_func)

def filter_data(self, data):
return filter(self.filter_func, data)

关于python - 如何在类属性中存储函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28415595/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com