在类结构中使用functools.partial,"name'self'未定义"

Emi*_*y K 5 python pandas functools

下面是我的代码的一个显着简化的版本.之后__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'])
Run Code Online (Sandbox Code Playgroud)

当我运行我的代码时,出现错误,NameError: global name 'self' is not defined.我尝试添加self许多似乎合乎逻辑的组合 - 下面是一个例子.

self.grade_comparison = functools.partial(comparison, self, infoList1 = ['A', 'B'])
Run Code Online (Sandbox Code Playgroud)

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

def comparison(self, subject, **kwargs):
        self.calculation(subject)
Run Code Online (Sandbox Code Playgroud)

我收到这个错误TypeError: comparison() takes at least 2 arguments (1 given).如果您需要更多背景,请告诉我们!如前所述,这是代码的准系统.

Mik*_*ler 3

我认为你可以实现你想要的,无需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'])
Run Code Online (Sandbox Code Playgroud)