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).如果您需要更多背景,请告诉我们!如前所述,这是代码的准系统.
我认为你可以实现你想要的,无需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)
| 归档时间: |
|
| 查看次数: |
849 次 |
| 最近记录: |