Hello all,
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.
Here is some code:
__all__ = ["ITest"]
from exceptions import Exception
class ITest(object):
def __init__(self):
if (self.__class__ == ITest):
raise Exception("ITes t cannot be instanciated")
def read(self,filen ame):
self.__filename = filename
def _getFilename(se lf):
return self.__filename
def make_reader():
return _PTest()
make_reader = staticmethod(ma ke_reader)
class _PTest(ITest):
class _PHandler(objec t):
def __init__(self):
super(_PHandler ,self).__init__ ()
#self.__map={}
def test(self):
pass
def __init__(self):
super(_PTest,se lf).__init__()
def read(self,filen ame):
super(_PTest,se lf).read(filena me)
print "HERE"
print dir()
print dir(self)
print self.__class__
print dir(self.__clas s__)
dh = self._PHandler( )
#dh.test()
if __name__=='__ma in__':
a=ITest.make_re ader()
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...
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.
Thanks in advance.
Regards,
--
Stephane Ninin
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.
Here is some code:
__all__ = ["ITest"]
from exceptions import Exception
class ITest(object):
def __init__(self):
if (self.__class__ == ITest):
raise Exception("ITes t cannot be instanciated")
def read(self,filen ame):
self.__filename = filename
def _getFilename(se lf):
return self.__filename
def make_reader():
return _PTest()
make_reader = staticmethod(ma ke_reader)
class _PTest(ITest):
class _PHandler(objec t):
def __init__(self):
super(_PHandler ,self).__init__ ()
#self.__map={}
def test(self):
pass
def __init__(self):
super(_PTest,se lf).__init__()
def read(self,filen ame):
super(_PTest,se lf).read(filena me)
print "HERE"
print dir()
print dir(self)
print self.__class__
print dir(self.__clas s__)
dh = self._PHandler( )
#dh.test()
if __name__=='__ma in__':
a=ITest.make_re ader()
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...
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.
Thanks in advance.
Regards,
--
Stephane Ninin
Comment