Can anyone helps me understand why this is this giving me an error? The error being "NameError: name 'self' is not defined". I have a similar class higher up in my code and that works fine?
I'm using 'xlrd' and team is a reference to a workbook.sheet_by_name.
class Rollout:
def __init__(self, team, name):
self.team = team
self.name = name
self.jobs = {}
self.start_row = 1
self.last_row = self.team.nrows
for i in range(self.start_row,self.last_row):
try:
self.jobs[i-1] = [str(self.team.cell_value(i,0)).upper(), \
str(self.team.cell_value(i,1)).upper(), \
str(self.team.cell_value(i,2)).upper(), \
str(self.team.cell_value(i,3)).upper(), \
str(xlrd.xldate_as_tuple(self.team.cell_value(i,4),0)[3]), \
str(self.team.cell_value(i,5)).upper(), \
str(self.team.cell_value(i,6)).upper()]
except ValueError:
print "It look's like one of your 'time' cells is incorrect!"
self.jobs[i-1] = [str(self.team.cell_value(i,0)).upper(), \
str(self.team.cell_value(i,1)).upper(), \
str(self.team.cell_value(i,2)).upper(), \
str(self.team.cell_value(i,3)).upper(), \
"missing", \
str(self.team.cell_value(i,5)).upper(), \
str(self.team.cell_value(i,6)).upper()]
An example of a class
If you omit the "self" keyword in your Constructor's ( init) argument, then you will get:
whenever you use "self" in the constructor method body.
The
for
loop is indented incorrectly resulting in it being outside that method's scope but inside the class' scope. This in turn means thatself
is not defined.Python does interpret that loop code in the scope of the class, but without an instance of the object. Sample malformed code:
Traceback
I got the same error while executing my code,
Then i kept space before last line of the codes like
Then got no error, So space is the problem..