nested class problem
Peter Otten
__peter__ at web.de
Sat Jan 24 17:11:17 EST 2004
Stephane Ninin wrote:
> I am trying to play with nested class in a script I am making,
> and I am not sure I really understand how they work.
[..]
>
> class _PTest(ITest):
>
> class _PHandler(object):
>
> def __init__(self):
> super(_PHandler,self).__init__()
Make that
super(_PTest._PHandler, self).__init__()
or, even better, omit it entirely. Python class hierarchies tend to remain
flat, because inheritance is only necessary for code reuse, not to indicate
a particular interface.
> #self.__map={}
>
> def test(self):
> pass
>
> def __init__(self):
> super(_PTest,self).__init__()
>
>
> def read(self,filename):
> super(_PTest,self).read(filename)
> print "HERE"
> print dir()
> print dir(self)
> print self.__class__
> print dir(self.__class__)
> dh = self._PHandler()
> #dh.test()
>
> if __name__=='__main__':
>
> a=ITest.make_reader()
> print dir(a)
> b=a.read("")
> print b
>
>
>
>
> I want to put class _PHandler in _Ptest,
> and use _PHandler in _Ptest methods,
> but anything I try doesnot work...
I think that's you fighting against the language and - a rare case - python
fighting back :-)
>
> On this configuration, I have:
> Traceback (most recent call last):
> File "./test.py", line 58, in ?
> b=a.read("")
> File "./test.py", line 51, in read
> dh = self._PHandler()
> File "./test.py", line 34, in __init__
> super(_PHandler,self).__init__()
> NameError: global name '_PHandler' is not defined
>
> and I have similar problems if I try to access _PHandler
> in different ways...
> Is this possible somehow ? Or what is the problem with my approach ?
> I know I could just dont use nested classes.., but I'd like to try.
I fail to see the benefit of nested classes. If you want to bring some
structure into your python application, try packages instead.
Peter
More information about the Python-list
mailing list