How to access outer class attribute from nested class

Heiko Henkelmann heiko at hhenkelmann.de
Tue Apr 27 15:37:34 EDT 2004


Sorry for not mentioning this in the first place. I don't want to 
instantiate the class. I much rather would to use it like:

SomeClass.SomeNestedClass.SomeNestedClassMethod()

Thanx


Larry Bates wrote:

> I use something like:
> 
> class SomeClass:
>     SomeAttribute = 1
> 
>     class SomeNestedClass:
>         SomeOtherAttribute = 2
>         def __init__(self, parent):
>             self.parent=parent
>             return
> 
>         def SomeNestedClassMethod(self):
>             print "%s-%s" % (
>                 self.parent.SomeAttribute,
>                 self.SomeOtherAttribute)
> 
>     def __init__(self):
>         self.SNC=self.SomeNestedClass(self)
>         return
> 
> if __name__=="__main__":
>     a=SomeClass()
>     a.SNC.SomeNestedClassMethod()
> 
> 
> I pretty much stole this idea from wxWindows.
> 
> Larry Bates
> Syscon, Inc.
> 
> 
> 
>>Please see the following example. Is there any other way to access
>>SomeAttribute from the nested class, without having to use the actual
>>name of the outer class?
>>
>>
>>class SomeClass:
>>     SomeAttribute = 1
>>
>>     class SomeNestedClass:
>>         SomeOtherAttribute = 2
>>
>>         def SomeNestedClassMethod(cls):
>>             print "%s%s" % (
>>                 SomeClass.SomeAttribute
>>                 cls.SomeOtherAttribute,
>>                 )
>>         SomeNestedClassMethod = classmethod(SomeNestedClassMethod)
>>
>>Thanx
> 
> 
> 



More information about the Python-list mailing list