Linuxtrent: Re: Qualche domanda su Python...

  • From: Matteo Ianeselli <ianezz@xxxxxxxxxx>
  • To: linuxtrent@xxxxxxxxxxxxx
  • Date: Mon, 21 May 2001 15:41:17 +0200

Il clone di Lele Gaifax ha segretamente scritto:

 > Quindi le classi *hanno* delle variabili "di classe"...

Ah, ecco. Non pensavo ci si potesse riferire agli attributi "di
classe" anche con self.attributo. Invece e` possibile (e parecchio
comodo per giunta).

######################################################################
def doSomething():
    print "Initializer called"
    return 123

class Pincopallo:
    _value = doSomething()

    def getValue2(self):
        return Pincopallo._value

    def getValue (self):
        return self._value
 
    def setValue(self,value):
        self._value = value

print "Before creating instances"

p1 = Pincopallo()
p2 = Pincopallo()

print "Value of p1 is %d" % (p1.getValue())
print "Value of p2 is %d" % (p2.getValue())

print "p2.setValue(456)"
p2.setValue(456)

print "Value of p1 is %d" % (p1.getValue())
print "Instance value of p2 is %d" % (p2.getValue())
print "Class    value of p2 is %d" % (p2.getValue2())

######################################################################


Initializer called
Before instantiating
Value of p1 is 123
Value of p2 is 123
p2.setValue(456)
Value of p1 is 123
Instance value of p2 is 456
Class    value of p2 is 123


 > Un errore comune, nella scrittura di un "metodo", è non dichiararne il
 > primo argomento, "self": mentre in C++ è implicito, qui lo devi
 > mettere per esplicito.

Su questo non ho dubbio alcuno.  E` che mi pareva naturale che un
metodo non legato ad una particolare istanza (e che quindi non lo usa)
non lo avesse, tutto qui.

Rileggendo meglio la FAQ, in realta` scopro che i metodi di una classe
devono necessariamente essere sempre legati ad un'istanza su cui
agire, punto e basta. 

Uhm, chissa` se fra i proposal c'e` qualcosa: dopotutto, se vale la
distinzione tra ``Nomeclasse.attributo'' e ``istanza.attributo'' (vedi
sopra), perche` non dovrebbe valere la stessa cosa anche per i metodi?

Chiaramente non e` un dramma, e` solo che ero abituato in maniera
diversa. :-)

-- 
UNIX diapers by Pannolini USPTO 2039887  http://www.uspto.gov
Matteo Ianeselli      ianezz AT sodalia.it  (+39) 0461 316452
Visita il LinuxTrent:            http://www.linuxtrent.it



-- 
Per iscriversi  (o disiscriversi), basta spedire un  messaggio con SOGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request@xxxxxxxxxxxxxxxxx


Other related posts: