On Jan 29, 2008, at 5:52 PM, Java wrote: > Non è necessario, avevo giusto un paio di liste da inizializzare, ma > alcune volte mi servivano vuote. > Posso fare tutto con un __init__ che crea tutto ciò che mi serva > lasciandolo "vuoto" e poi riempio tutto con metodi "set"
1. se devi settare una variabile non creare un metodo per settare la variabile; setta la variabile. [0] 2. si, puoi fare un metodo init che non faccia nulla e fare fare il resto fuori, ma non necessariamente è la strada migliore. 3. puoi fare n-mila metodi factory (ma non necessariamente è la strada migliore) def __init__(self, foo=None, bar=None, ...): if foo: self.foo = foo else: self.foo = some_default_value ... a = MyObj(foo='spam') b = MyObj(foo='eggs') c = MyObj(foo='spam', bar='eggs') d = MyObj() e = MyObj('spam') f = MyObj('spam', 'eggs') ----- [0] codice come questo è considerato altamente inutile e sgradevole def setFoo(self, value): self.value = value > Ma quindi se A eredita da B, non può fare l'overloading dei metodi > di B? Il concetto di 'overloading' non ha senso in python. L'overload è un obiettivo o un mezzo? L'overload è un *mezzo*. Quale è il problema che risolve? Quello di avere più metodi con lo stesso nome che accettano parametri diversi per numero e per tipo. Come risolve lo stesso problema Python? Il tipo è ininfluente, fare funzioni che accettano un numero variabile di argomenti è banale, comodo da gestire e piuttosto gradevole da leggere (again, named parameters). > _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python