thanks guys.

cheers,
Stef

Terry Reedy wrote:
Stef Mientki wrote:
hello,

although this is not a real problem for me,
it was caused by a copying, instead of moving, a piece of code.
But I don't understand at all why the code below gives the error.
class derived_class, is defined twice,
the error is cuase by the second instance creation "test2="
for me even weirder, if I create test2 in another module, everything works perfect ???
Any explanation would be welcome.

A different version of what Arnaud D. said:

==== start of code ===
class base_class ( object ) :
 def __init__ ( self ) :
   pass

class derived_class ( base_class ) :
 def __init__ ( self ) :
   base_class.__init__ ( self )

class final_class_1 ( derived_class ) :

In this line, 'derived_class' is evaluated when the class is defined

 def __init__ ( self ) :
   derived_class.__init__ ( self )

In this line, 'devired_class' is evaluated when the class is instantiated and __init__ is called.

test1 = final_class_1 ()

Here, the object corresponding to 'derived_class in f_c_1.__init__is the same as when f_c_1 was created.

class derived_class ( base_class ) :
 def __init__ ( self ) :
   base_class.__init__ ( self )

test2 = final_class_1 ()

Here, object corresponding to 'derived_class in f_c_1.__init__is no longer the same as when f_c_1 was created.


==== end of code =====

==== error meassage =====
Traceback (most recent call last):
 File "D:\Data_Python_25\PyLab_Works\module1.py", line 19, in <module>
   test2 = final_class_1 ()
 File "D:\Data_Python_25\PyLab_Works\module1.py", line 11, in __init__
   derived_class.__init__ ( self )
TypeError: unbound method __init__() must be called with derived_class

This refers to the second 'derived_class', and f_c_1 ia *not* a subclass of *that* class object.

instance as first argument (got final_class_1 instance instead)

tjr

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

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

Reply via email to