Greetings, .append(self) is a hit idea
Updated the project with the button demo https://github.com/Abdur-rahmaanJ/hooman/ Next i will be attempting to add a grid system. I feel myself developing tkinter from scratch Thanks for the help everybody ^^_ Kind Regards, Abdur-Rahmaan Janhangeer compileralchemy <https://compileralchemy.github.io/> | blog <https://abdur-rahmaanj.github.io/> github <https://github.com/Abdur-RahmaanJ> Mauritius On Thu, May 28, 2020 at 2:45 AM DL Neil via Python-list < python-list@python.org> wrote: > @AR, > > > On 28/05/20 8:41 AM, Chris Angelico wrote: > > On Thu, May 28, 2020 at 6:27 AM Abdur-Rahmaan Janhangeer > > <arj.pyt...@gmail.com> wrote: > >> > >> Thanks, > >> > >> Actually i want to keep a reference from B to all A > >> instantiated like in the case of z > >> > >> I have class A and i want to call class B via A > >> > >> You can have > >> > >> def x(self, *args, **kwargs): > >> return A(*args, **kwargs) > >> > >> but was wondering if we could keep track while > >> doing it via z = ... > >> > > > > Okay, now I think I get what you're after. Let's simplify and clarify > > things. Let me know if I'm misinterpreting. > > > > 1) You have a container class that can instantiate objects of a thing > class > > 2a) You wish for the container to be aware of all things it has created > - OR - > > 2b) You wish for the Thing to be aware of all containers that have > created them > > 3) You want this to happen automatically. > > > > I'm not sure which way round you're trying to do this, so I'll try to > > answer both. Your Container (Hooman) can construct multiple Things > > (Button), and other classes could also construct Things. So you need > > some way to automatically register the Thing as you create it. > > > > The easiest way to do this would, I think, be to have your Container > > subclass a utility class, and then use self.Button() instead of > > Button(). That can take care of registering the button in some sort of > > list, and then it can still return the button in case you need it for > > something else. > > > > Would that work? Or am I completely off on my analysis? > > Here's some sample code, which may give you some ideas (intriguingly it > comes from my playing-about with a project @Chris described (some time > back), which includes the need to 'register' sub-components and to keep > a count of them): > > > # PSL > import collections > from itertools import count > > > class Link(): > '''Contain original link, manipulate for presentation, > and retain for later action. > ''' > > ID = count( 0 ) > instances = [] > > > def __init__( self, token:Token, )->None: > '''Instantiate.''' > self.token = token > > self.linkNR:int = next( self.ID ) #linkNR > Link.instances.append( self ) #form a register > of instances/links > > self.URL:str = "" > > ...more methods here - likely irrelevant to your needs... > > > class LinksRegister( collections.UserList ): > '''Links available for use within application.''' > > def __iter__( self ): > '''Generator.''' > for link in self.data: > yield link > > def register_links( self, cls ): > '''Register all links.''' > self.data = cls.instances > > > Once all of the Link() objects have been ascertained, we can make use of > the class-attributes: > > links_register.register_links( Link ) > > NB in this scenario it is only necessary to register once - all of the > links at-once, cf registering each link as it is itself instantiated. > Also, that each Link() object is not aware that it is/will be 'registered'! > > > Later, when it is necessary to carry-out the same action on each of the > objects, we can use the register's iterator/generator (as above). > > > Critique/other ideas welcome... > -- > Regards =dn > -- > https://mail.python.org/mailman/listinfo/python-list > -- https://mail.python.org/mailman/listinfo/python-list