Path: csiph.com!au2pb.net!feeder.erje.net!2.eu.feeder.erje.net!newsfeed0.kamp.net!newsfeed.kamp.net!fu-berlin.de!uni-berlin.de!not-for-mail From: Michael Torrie Newsgroups: comp.lang.python Subject: Re: Accessing container's methods Date: Mon, 07 Dec 2015 11:36:02 -0700 Lines: 23 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit X-Trace: news.uni-berlin.de nwj5ahLgshHj+nYb5VS9QgYLuruCjPUMBgz7/hwHOC+w== Return-Path: X-Original-To: python-list@python.org Delivered-To: python-list@mail.python.org X-Spam-Status: OK 0.013 X-Spam-Evidence: '*H*': 0.97; '*S*': 0.00; 'classes,': 0.05; 'class;': 0.16; 'contrived': 0.16; 'directly?': 0.16; 'from:addr:torriem': 0.16; 'from:name:michael torrie': 0.16; 'received:io': 0.16; 'received:psf.io': 0.16; 'sorts': 0.16; 'sub-class': 0.16; 'subject:Accessing': 0.16; 'wrote:': 0.16; 'attribute': 0.18; 'all,': 0.20; 'object.': 0.22; 'am,': 0.23; 'header:In-Reply- To:1': 0.24; 'header:User-Agent:1': 0.26; 'van': 0.26; 'object,': 0.27; 'container': 0.29; 'raise': 0.29; "i'm": 0.30; 'code': 0.30; 'anyone': 0.32; "can't": 0.32; 'embedded': 0.32; 'holds': 0.32; 'class': 0.33; 'message-id:@gmail.com': 0.34; 'definition': 0.34; 'add': 0.34; 'could': 0.35; 'child': 0.36; 'to:addr:python-list': 0.36; 'subject:: ': 0.37; 'really': 0.37; 'method': 0.37; 'setting': 0.37; 'received:org': 0.37; 'hi,': 0.38; 'why': 0.39; 'received:192': 0.39; 'rather': 0.39; 'to:addr:python.org': 0.40; 'where': 0.40; 'back': 0.62; 'charset:windows-1252': 0.62; 'information': 0.63; 'here': 0.66 X-Virus-Scanned: amavisd-new at torriefamily.org User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0 In-Reply-To: X-BeenThere: python-list@python.org X-Mailman-Version: 2.1.20+ Precedence: list List-Id: General discussion list for the Python programming language List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Xref: csiph.com comp.lang.python:100099 On 12/07/2015 11:10 AM, Tony van der Hoff wrote: > 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? You could add an attribute to each embedded object that provides a reference back to the container object. All in all, this design has a kind of smell to it. Would it not be better to ask the container class for information about the children, rather than the other way around? If a piece of code holds a reference to the child object then it must also by definition hold a reference to the container object, so why can't it ask the container object directly?