在类结构中使用functools.partial "name 'self' is not defined"



下面是我的代码的一个显著简化版本。在__init__()之后有几个功能。

我正在尝试使用functools.partial来创建基本comparison函数的不同版本,该函数引用了类中早期创建的函数calculation。此比较函数的一个版本可能是下面所示的grade_comparison

class Analysis(mybaseclass):
    def __init__(self, year, cycle):
....
    def calculation(self, subject):
        print subject
    def comparison(subject, **kwargs):
        self.calculation(subject)
    grade_comparison = functools.partial(comparison, infoList1 = ['A', 'B'])

当我运行代码时,出现了一个错误NameError: global name 'self' is not defined。我尝试过以许多看起来合乎逻辑的组合添加self——下面的一个例子。

self.grade_comparison = functools.partial(comparison, self, infoList1 = ['A', 'B'])

此更改导致此错误,NameError: name 'self' is not defined当我将self添加到比较函数时(见下文):

def comparison(self, subject, **kwargs):
        self.calculation(subject)

我收到这个错误,TypeError: comparison() takes at least 2 arguments (1 given)。如果您需要更多上下文,请告诉我!如前所述,这是代码的基本内容。

我认为你可以在没有partial:的情况下实现你想要的

class Analysis(object):
    def calculation(self, subject):
        print subject
    def comparison(self, subject, **kwargs):
        self.calculation(subject)
    def grade_comparison(self, subject):
        return self.comparison(subject, infoList1=['A', 'B'])

相关内容

  • 没有找到相关文章

最新更新