Ciao a tutti, ho un problema con l'overloading dell'operatore in oggetto. Cerco di spiegarlo con un esempio semplice. Col seguente:
class Commuter: def __init__(self, val): self.val = val se scrivo: c = Commuter(23) print(c) ottengo: <__main__.Commuter instance at 0xb7ddbfcc> e fin quà niente di strano. Ma se come detto, faccio l'overloading di questo operatore, cioè con: class Commuter: def __init__(self, val): self.val = val def __getattr__(self, nome): print("BO") se scrivo: c = Commuter(23) print(c) ottengo: BO Traceback (most recent call last): File "libreria.py", line 83, in ? print(c) TypeError: 'NoneType' object is not callable Osservo che ha scritto BO segno che è passato per __getattr__. Ma perché? Forse viene interpretato come una qualificazione di un attributo di nome "" (senza nome)? Se su def __getattr__(self, nome): ci inserisco un print(nome) ottengo: __str__ Ciò mi mette ancora più in confusione. Comunque il mio obiettivo sarebbe quello di usare __radd__ solo che il mio oggetto ha sia la __radd__ che la __getattr__ e quest'ultima fa in modo che la __radd__ non riceva correttamente l'istanza del mio oggetto impedendomi di usarla. Qualche idea? Grazie. Matteo. _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python