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.catu...@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@lists.python.it > http://lists.python.it/mailman/listinfo/python > _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python