map and self
Larry Whitley
ldw at us.ibm.com
Fri Sep 15 14:03:50 EDT 2000
I'm having trouble understanding "self" when used within a map(). Here's my
problem:
class A:
def __init__(self):
self.cnt = 0
class B:
def __init__(self):
self.cntList = []
for i in range(5):
self.cntList.append( A() )
def myprint(self):
print map( lambda x: self.cntList[x].cnt, range(len(self.cntList)))
>>> b = B()
>>> b.cntList[1].cnt
0
>>> b.myprint()
Traceback (innermost last):
File "<interactive input>", line 1, in ?
File "<interactive input>", line 7, in myprint
File "<interactive input>", line 7, in <lambda>
NameError: self
Yet, when I perform the above actions interactively, it works as expected.
(Note that I left "self" off here since it is inappropriate in outside the
context of a class.)
>>> cntList = []
>>> for i in range( 5 ):
>>> cntList.append( A() )
>>> len(cntList)
5
>>> map( lambda x: cntList[x].cnt, range( len( cntList )))
[0, 0, 0, 0, 0]
So, my question... How do I get around the NameError: self problem and use
this sort of thing in methods internal to a class?
Larry
More information about the Python-list
mailing list