calling super()

John Clark clajo04 at mac.com
Wed Apr 4 21:30:53 CEST 2007


Yeah!!! One I can actually answer!!!

super() only works on new-style classes - your classes don't have object
anywhere in the inheritance tree so super() isn't going to help..

New-style classes are known as types, old-style classes are known as
classobjs.

Hope this helps,
-jdc


-----Original Message-----
From: python-list-bounces+clajo04=mac.com at python.org
[mailto:python-list-bounces+clajo04=mac.com at python.org] On Behalf Of
Finger.Octopus at gmail.com
Sent: Wednesday, April 04, 2007 3:23 PM
To: python-list at python.org
Subject: calling super()

Hello, I have been trying to call the super constructor from my derived
class but its not working as expected. See the code:

class HTMLMain:
    def __init__(self):
        self.text = "<HTML><BODY>";
        print(self.text);
    def __del__(self):
        self.text = "</BODY></HTML>";
        print(self.text);

class NewPage(HTMLMain):
    def __init__(self):
        print 'derive2 init'
        super(NewPage, self).__init__();


N = NewPage();
del N


And here's the error message I get:

Traceback (most recent call last):
  File "e:/PyEN/inherit.py", line 16, in <module>
    N = NewPage();
  File "e:/PyEN/inherit.py", line 12, in __init__
    super(NewPage, self).__init__();
TypeError: super() argument 1 must be type, not classobj

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




More information about the Python-list mailing list