Below is a significantly simplified version on my code. After the __init__()
there are several functions.
I am trying to use functools.partial
to create different versions of a basic comparison
function, which references a function created earlier in the class, calculation
. One version of this comparison function might be the grade_comparison
seen below.
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'])
When I run my code, there is an error, NameError: global name 'self' is not defined
. I have tried adding self
in many combinations that seemed logical - one example below.
self.grade_comparison = functools.partial(comparison, self, infoList1 = ['A', 'B'])
This change resulted in this error, NameError: name 'self' is not defined
When I add self to the comparison function (see below):
def comparison(self, subject, **kwargs):
self.calculation(subject)
I get this error, TypeError: comparison() takes at least 2 arguments (1 given)
. Please let me know if you need more context! As mentioned, this is the barebones of the code.
I think you can achieve what you want without 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'])
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With