Question about instance creation

Robin Barendregt r.barendregt at village.uunet.be
Mon Mar 20 16:05:42 EST 2000


Argh! Ok, I suck. In class2.py, the definition for DynamicClass should
be:

class DynamicClass:
    def __init__(self, newAlias, *args):
        global BaseAlias
        BaseAlias = newAlias
        apply(DerivedClass, args)

That actually gives me a TypeError: unbound method must be called with
class instance 1st argument

I hope that I'm not totally non-sensical here.


r.barendregt at village.uunet.be (Robin Barendregt) wrote:

>Hi all,
>
>This is my first ever post to a newsgroup, so if I'm breaking every
>rule, please forgive me :)
>I'm a python newbie and am trying to create instances of a class that
>can have a changing base class. A code example should clarify
>(questions follow after code snippet):
>
>File class1.py contains:
>
>from class2 import *
>
>class Class1:
>    def __init__(self, arg = "no arg given"):
>        print 'Class1 init'
>        print arg
>        self.var1 = 'this is var1'
>
>    def method1(self):
>        print "this is method1"		
>		
>class Class2:
>    def __init__(self):
>        print 'Class2 init'
>        self.var2 = 'this is var2'
>		
>    def method2(self):
>        print "this is method2"
>		
>class Class3(Class1, Class2):
>    def __init__(self):
>        Class1.__init__(self)
>        Class2.__init__(self)
>        print 'Class3 init'
>        c = DynamicClass(Class1, "arg given")
>        print c
>        self.var3 = 'this is var3'
>
>    def method3(self):
>        print "this is method3"
>		
>if __name__ == '__main__':
>    c = Class3()
>
>And file class2.py contains:
>
>class DummyClass:
>    def __init__(self):
>        pass
>
>BaseAlias = DummyClass
>
>class DynamicClass:
>    def __init__(self, newAlias, *args):
>        global BaseAlias
>        BaseAlias = newAlias
>        apply(BaseAlias, args)
>
>class DerivedClass(BaseAlias):
>    def __init__(self, *args):
>        apply(BaseAlias.__init__, (self,) + args)
>
>
>I want the var c in Class3.__init__ to contain and instance of the
>class given as 1st argument to DynamicClass. I tried using return in
>the DerivedClass.__init__ but I get an exception saying I should
>return None in an __init__. How can I accomplish this?
>
>Oh, and thanks for reading :)
>
>Robin Barendregt.




More information about the Python-list mailing list