inner classes in python as inner classes in Java
Carlo v. Dango
oest at soetu.eu
Sat Oct 18 17:05:59 EDT 2003
More information about the Python-list mailing list
Sat Oct 18 17:05:59 EDT 2003
- Previous message (by thread): inner classes in python as inner classes in Java
- Next message (by thread): inner classes in python as inner classes in Java
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Thu, 16 Oct 2003 08:30:06 +0000 (UTC), Duncan Booth <duncan at NOSPAMrcp.co.uk> wrote: > "Carlo v. Dango" <oest at soetu.eu> wrote in > news:oprw4lztsdmyya52 at news.kadnet.dom: > >>> You'll have to decide what semantics you want to obtain when an >>> attribute is set on an instance of the "inner class" -- I sure can't >>> do it on your behalf. >> >> I want the semantics of java's inner classes and the semantics of >> inner methods... that the inner class shares the fields and methods of >> its outer class instance.. But I've come to realize I can't do this in >> python, as the statement in some method in the inner class "self.i = >> 42" can be interpreted as "create i in the inner class instance" or >> "lookup i in the 'outer scope' and set it" > > What you want wouldn't necessarily be impossible. You should be able to > create a metaclass for the inner class that automatically creates > properties in the inner class which access the outer class fields. That > way > you could expand: > > self.a = 42 > > to something equivalent to: > > self.__outer.a = 42 > > Actually, thinking about it you need to put the metaclass on the outer > class rather than the inner one. That way when the outer class is > created, > you can check its dictionary for any classes it contains and give each of > those classes the appropriate properties. that is a nice idea, however, how do I know which fields are defined in the outer class?? fields can be defined in every method and on runtime.. class A(object): def foo(self, arg): if arg == 0: self.i = 3 # create a 'i' else self.j = 4 # create a 'j' so when the metaclass examines my A class, are both i and j defined in the class or how? > I think it ought also to be possible to add a __get__ method to the inner > class so that accessing the inner class through an instance of the outer > class returns what would effectively be a 'bound class' (cf bound method) > which sets the __outer member automatically when you create an instance > of > the inner class. that would be rather cool, but Im not sure I fully understand your idea. could you produce some (pseudo) code? -carlo -- Using M2, Opera's revolutionary e-mail client: http://www.opera.com/m2/
- Previous message (by thread): inner classes in python as inner classes in Java
- Next message (by thread): inner classes in python as inner classes in Java
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list