Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #100096
| Path | csiph.com!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail |
|---|---|
| From | Tony van der Hoff <tony@vanderhoff.org> |
| Newsgroups | comp.lang.python |
| Subject | Accessing container's methods |
| Date | Mon, 7 Dec 2015 18:10:10 +0000 |
| Lines | 61 |
| Message-ID | <dcm0c2Fi2ktU1@mid.individual.net> (permalink) |
| Mime-Version | 1.0 |
| Content-Type | text/plain; charset=utf-8; format=flowed |
| Content-Transfer-Encoding | 7bit |
| X-Trace | individual.net PxV0aFi9cwzyxRxGnTmHNw6mnf+NMtp/W9Do9kvMTSdjwUGOlw |
| Cancel-Lock | sha1:7QYDgrjkcfm6KQG1FD7zfYXHuo4= |
| X-Mozilla-News-Host | news://news.individual.net:119 |
| User-Agent | Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Icedove/38.4.0 |
| Xref | csiph.com comp.lang.python:100096 |
Show key headers only | View raw
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
Back to comp.lang.python | Previous | Next — Next in thread | Find similar | Unroll thread
Accessing container's methods Tony van der Hoff <tony@vanderhoff.org> - 2015-12-07 18:10 +0000
Re: Accessing container's methods Rob Gaddi <rgaddi@highlandtechnology.invalid> - 2015-12-07 18:21 +0000
Re: Accessing container's methods Michael Torrie <torriem@gmail.com> - 2015-12-07 11:36 -0700
Re: Accessing container's methods Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-12-07 20:03 +0100
Re: Accessing container's methods Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-12-07 19:46 +0100
Re: Accessing container's methods Peter Otten <__peter__@web.de> - 2015-12-07 19:59 +0100
Re: Accessing container's methods Ian Kelly <ian.g.kelly@gmail.com> - 2015-12-07 12:33 -0700
Re: Accessing container's methods Terry Reedy <tjreedy@udel.edu> - 2015-12-07 16:38 -0500
Re: Accessing container's methods Chris Angelico <rosuav@gmail.com> - 2015-12-08 09:02 +1100
Re: Accessing container's methods Erik <python@lucidity.plus.com> - 2015-12-07 23:47 +0000
Re: Accessing container's methods Tony van der Hoff <tony@vanderhoff.org> - 2015-12-08 12:35 +0000
Re: Accessing container's methods [solved] Tony van der Hoff <tony@vanderhoff.org> - 2015-12-08 13:46 +0000
Re: Accessing container's methods Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-12-08 20:02 +0100
Re: Accessing container's methods Vincent Vande Vyvre <vincent.vande.vyvre@telenet.be> - 2015-12-08 20:54 +0100
Re: Accessing container's methods Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-12-08 23:51 +0100
Re: Accessing container's methods Mark Lawrence <breamoreboy@yahoo.co.uk> - 2015-12-08 20:30 +0000
Re: Accessing container's methods Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-12-08 23:52 +0100
Re: Accessing container's methods Mark Lawrence <breamoreboy@yahoo.co.uk> - 2015-12-08 22:59 +0000
Re: Accessing container's methods Erik <python@lucidity.plus.com> - 2015-12-08 22:37 +0000
Re: Accessing container's methods Ian Kelly <ian.g.kelly@gmail.com> - 2015-12-08 16:41 -0700
Re: Accessing container's methods Chris Angelico <rosuav@gmail.com> - 2015-12-09 12:04 +1100
csiph-web