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