Hi,
I have a class A, containing embedded embedded classes, which need to
access methods from A.
.
A highly contrived example, where I'm setting up an outer class in a
Has-a relationship, containing a number of Actors. The inner class needs
to access a method of the outer class; here the method get_name.
I don't really want to make Actor a sub-class (is-a; it isn't) of Monty;
that would raise all sorts of other problems.
Can anyone please advise me on how to achieve this magic?
# define the outer class
class Monty:
def __init__( self, names ):
self.actors = []
i = 0
for n in names:
self.actors.append( Actor( n, i ) )
i += 1 # here is a case for python supporting post-increment!
def count_actors( self ):
return len( self.actors )
def list_actors( self ):
h=[]
for n in self.actors:
h.append( n.get_name() )
return h
# define the inner class
class Actor:
def __init__ ( self, name, id ):
self.name = name
self.id = id
def get_name( self ):
# and here lies the problem;
# AttributeError: Actor instance has no attribute 'count_actors'
# how do I access the method in the enclosing class
txt = "I'm Actor {} Number {} of {}".\
format( self.name, self.id, self.count_actors() )
# this works, of course
#txt = "I'm Actor \"{}\"; Number {}. ".\
format( self.name, self.id )
return txt
if __name__ == '__main__':
o = Monty( ["Cleese", "Idle", "Palin" ] )
print "number: ",o.count_actors()
a = o.list_actors()
for l in a:
print l
Thanks, Tony
--
https://mail.python.org/mailman/listinfo/python-list