使用Python进行后处理的优雅方式

2024-06-28 19:35:25 发布

您现在位置:Python中文网/ 问答频道 /正文

考虑以下在python中使用继承的后处理示例(fromthis website):

import os

class FileCat(object):
    def cat(self, filepath):
        f = file(filepath)
        lines = f.readlines()
        f.close()
        return lines

class FileCatNoEmpty(FileCat):
    def cat(self, filepath):
        lines = super(FileCatNoEmpty, self).cat(filepath)
        nonempty_lines = [l for l in lines if l != '\n']
        return nonempty_lines

基本上,当我们进行后处理时,我们并不真正关心原始调用,我们只想处理函数返回的数据。在

因此,在我看来,理想情况下,我们不需要重新声明原始函数的签名,而只是为了能够将其转发给原始函数。在

如果FileCat类有100个不同的函数(cat1cat2cat3,…)返回相同类型的数据,并且我们希望使用后处理的NoEmpty版本,那么我们就必须在FileCatNoEmpty中定义相同的100个函数签名来转发调用。在

所以问题是:有没有更优雅的方法来解决这个问题?在

也就是说,类似于FileCatNoEmpty类,它将自动使来自FileCat的所有方法都可用,但仍然允许我们处理返回值?在

有点像

^{2}$

或者甚至是另一种不使用继承的解决方案。在

谢谢!在


Tags: 数据方法函数self示例returndef后处理