[Python] Perplesso su come è stato definito __init__: avete qualche spiegazione?

Marco Ippolito ippolito.marco a gmail.com
Lun 12 Gen 2015 10:47:15 CET


mille grazie Carlos della tua spiegazione.
 nel tuo esempio per passare alle variabili (definite dopo la
dichiarazione della classe) i relativi valori si usa proprio
self.nome_variabile_1 = valore_1, self.nome_variabileself_2 = valore_2
ed è proprio quello che mi aspettavo di vedere all'interno di def
__init__(self, rng, input, filter_shape, image_shape, poolsize=(2,
2)):

Ora ho capito che si possono anche definire le variabili all'interno
di def __init__(....):
senza associarle in modo continuativo all'oggetto creato.
Continuo comunque a non afferrarne l'utilità di definire variabili in
__init__ senza associarle all'oggetto creato

Marco

Il 12 gennaio 2015 10:31, Carlos Catucci <carlos.catucci a gmail.com> ha scritto:
> mi sto studiando gli algoritmi che trovo qui:
>>
>> http://deeplearning.net/tutorial/lenet.html#lenet per adattarli a
>> quello che sto facendo io ora.
>>
>> Nel far ciò ho delle perplessità riguardanti python che mi lasciano
>> interdetto...:
>>
>> class LeNetConvPoolLayer(object):
>>     """Pool Layer of a convolutional network """
>>
>>     def __init__(self, rng, input, filter_shape, image_shape, poolsize=(2,
>> 2)):
>>
>> io pensavo che:
>> 1) le variabili messe tra parantesi, che sono quelle passate alla
>> classe quando viene chiamata, dovessero obbligatoriamente essere tutte
>> poi definite in __init__ ,
>
>
> Tra parentesi dopo il nome della classe trovi le classi da cui eredita, se
> non specifichi nulla prende per buono che vuoi usrae la classe base Object
>
>>
>> 2) e che tutte le variabili definite
>> all'interno di __init__ fossero tutte variabili dell'instanza della
>> classe e,. per questo, dovessero avere self
>> invece:
>> a) tra tutte le variabili in def __init__
>> (self, rng, input, filter_shape, image_shape, poolsize=(2, 2)):
>> solo self.input = input e poolsize sono definite
>> b) solo alcune delle variabili all'interno di __init__ sono state
>> definite con self.
>
>
> Self e' il puntatore all'istanza corrente. Esempio
>
> class Pinco():
>
>     .....
>
>
> a = Pinco()
> b = Pinco()
>
> a.valore1 = 10
> b.valore1 = 20
>
> Come fa aa capire se valore1 che stiamo usando e' di a o di b? Con self che
> punta ad a o a b.
> Le variabilile definisci dopo la dichiarazione class Pinco():
>
> class Pinco():
>
>     valore1 = None
>     valore2 = None
>
>     def __init__(v1, v2):
>
>         self.valore1 = v1
>         self.valore2 = v2
>
> In questo modo nel momento in cui crei l'oggetto passi come parametri i
> valori contenuti nella chiamata a __init__ che e' un Magic Method (ce ne
> sono anche altri) che vengono assegnati alle variabili dell'istanza.
>
> Carlos
> --
> EZLN ... Para Todos Todo ... Nada para nosotros
>
> _______________________________________________
> Python mailing list
> Python a lists.python.it
> http://lists.python.it/mailman/listinfo/python
>


Maggiori informazioni sulla lista Python