> Mi pare che sia normalissimo fare overloading come questo > > class A(object): > def __init__(self): > pass > > class B(A): > def __init__(self): > print 'OK'
Questo non è tecnicamente overloading, ma overriding. L'overloading che si insegna nel mondo "statico" è la presenza di più metodi con nome diverso ma "firme" diverse. Questo non è possibile in Python, per questo ci sono i named parameters. L'overriding invece l'hiding di un metodo di una superclasse da parte di una sottoclasse (in alcuni linguaggi va esplicitato con il virtual, in Python no). BTW l'esempio che hai fatto non convince nemmeno me, per 2 motivi: 1 - l'eventuale codice di A.__init__() inizializzando B non viene chiamato In [1]: class A(object): ...: def __init__(self): ...: print self.__class__ ...: ...: In [2]: class B(A): ...: def __init__(self): ...: print self.__class__ ...: In [3]: B() <class '__main__.B'> Out[3]: <__main__.B object at 0xe5e2d0> 2 - nel caso di gerarchie con ereditarietà multipla si perde l'ereditarietà -- Lawrence, stacktrace.it - oluyede.org - neropercaso.it "It is difficult to get a man to understand something when his salary depends on not understanding it" - Upton Sinclair _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python