[Python] diversi __init__ ??
Enrico Franchi
enrico.franchi a gmail.com
Mar 29 Gen 2008 19:33:21 CET
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).
>
More information about the Python
mailing list