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

2015-01-12 Thread Marco Ippolito
Ciao a tutti,
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__ , 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.

Quali potrebbero essere i motivi che hanno portato a definire in
questo modo le variabili in __init__?

Vi ringrazio.
Marco
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


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

2015-01-12 Thread Marco De Paoli
Il giorno 12 gennaio 2015 10:20, Marco Ippolito 
ha scritto:

> Ciao a tutti,
> 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__ , 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.
>
> Quali potrebbero essere i motivi che hanno portato a definire in
> questo modo le variabili in __init__?
>

perchè mai tutti i valori passati ad init dovrebbero poi essere "salvati"
anche come attributi dell'istanza?
ad esempio il valore di filter_shape viene semplicemente utilizzato nella
funzione __init__ ed, evidentemente, non c'è alcun bisogno di
"ricordarselo" associandolo in modo continuativo all'oggetto creato

ciao,
Marco
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


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

2015-01-12 Thread Carlos Catucci
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@lists.python.it
http://lists.python.it/mailman/listinfo/python


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

2015-01-12 Thread Marco Ippolito
ciao Marco,
grazie per darmi delle spiegazioni.
Nella mia "infinita" ignoranza, pensavo che tutto ciò che fosse
definito in __init__ fosse automaticamente "associato" in modo
continuativo all'oggetto creato.
A quanto pare non è proprio così.

Marco

Il 12 gennaio 2015 10:29, Marco De Paoli  ha scritto:
>
>
> Il giorno 12 gennaio 2015 10:20, Marco Ippolito 
> ha scritto:
>
>> Ciao a tutti,
>> 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__ , 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.
>>
>> Quali potrebbero essere i motivi che hanno portato a definire in
>> questo modo le variabili in __init__?
>
>
> perchè mai tutti i valori passati ad init dovrebbero poi essere "salvati"
> anche come attributi dell'istanza?
> ad esempio il valore di filter_shape viene semplicemente utilizzato nella
> funzione __init__ ed, evidentemente, non c'è alcun bisogno di "ricordarselo"
> associandolo in modo continuativo all'oggetto creato
>
> ciao,
> Marco
>
>
> ___
> Python mailing list
> Python@lists.python.it
> http://lists.python.it/mailman/listinfo/python
>
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


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

2015-01-12 Thread Marco Ippolito
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  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@lists.python.it
> http://lists.python.it/mailman/listinfo/python
>
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


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

2015-01-12 Thread Carlos Catucci
2015-01-12 10:47 GMT+01:00 Marco Ippolito :

> 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
>

Ad esempio per svolgere operazioni dentro __init__

Eseguo un ciclo, mi serve un indice, mica devo passarlo all'oggetto?
Oppure ho una variabile di classe (static) condivisa tra tutti gli oggetti

class Persona():
cognome = 'Rossi'
nome = ''
def __init__(self, nome):
self.nome = nome
def printPersona(self):
   print "%s %s" % (self.nome, self.cognome)

mario = Persona('Mario')
giovanni = Persona("Giovanni")
anna = Persona("Anna")
mario.printPersona()
giovanni.printPersona()
anna.printPersona()

Provalo e vedi che ti stampa sempre Rossi come cognome.

Carlos
-- 
EZLN ... Para Todos Todo ... Nada para nosotros
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


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

2015-01-12 Thread Marco Ippolito
si grazie Carlos
sono tutti della stessa famiglia

Marco

Il 12 gennaio 2015 11:37, Carlos Catucci  ha scritto:
>
> 2015-01-12 10:47 GMT+01:00 Marco Ippolito :
>>
>> 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
>
>
> Ad esempio per svolgere operazioni dentro __init__
>
> Eseguo un ciclo, mi serve un indice, mica devo passarlo all'oggetto?
> Oppure ho una variabile di classe (static) condivisa tra tutti gli oggetti
>
> class Persona():
> cognome = 'Rossi'
> nome = ''
> def __init__(self, nome):
> self.nome = nome
> def printPersona(self):
>print "%s %s" % (self.nome, self.cognome)
>
> mario = Persona('Mario')
> giovanni = Persona("Giovanni")
> anna = Persona("Anna")
> mario.printPersona()
> giovanni.printPersona()
> anna.printPersona()
>
> Provalo e vedi che ti stampa sempre Rossi come cognome.
>
> Carlos
> --
> EZLN ... Para Todos Todo ... Nada para nosotros
>
> ___
> Python mailing list
> Python@lists.python.it
> http://lists.python.it/mailman/listinfo/python
>
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python