Brian Munroe wrote:
My example:

class A(object):

        def __init__(self, name):
                self.__name = name

        def getName(self):
                return self.__name

class B(A):

        def __init__(self,name=None):
                super(A,self).__init__()

        def setName(self, name):
                self.__name = name

if __name__ == '__main__':

        a = A('class a')
        print a.getName()

        b = B('class b')
        print b.getName()

        b.setName('class b, reset')
        print b.getName()

I get the following error:

mtinky:~ brian$ python teste.py
class a
Traceback (most recent call last):
  File "teste.py", line 23, in <module>
    print b.getName()
  File "teste.py", line 7, in getName
    return self.__name
AttributeError: 'B' object has no attribute '_A__name'

Am I *not* using super() correctly?  Also, did I define my the class B
constructor correctly?
--
http://mail.python.org/mailman/listinfo/python-list

Tell us what you are trying to do and what you expected to happen. If you are trying to do simple inheritance, you don't need the supers, and you should not invoke the name mangling implied by the double underscore.

If you *are* trying to use the name mangling, then you still don't need the super.


Gary Herron


--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to