[Linux-Biella] R: R: [blog]Programmazione ad oggetti

Raffaele Salmaso raffaele.salmaso a gmail.com
Mar 2 Dic 2008 15:04:23 CET


Marco Vallini wrote:
> On Tue, Dec 2, 2008 at 2:16 PM, Raffaele Salmaso <raffaele.salmaso a gmail.com
>> wrote:
> 
>> Marco Vallini wrote:
>>> def lafunzionechevuoi( ):
>>>    print "LOL"
>>>
>>> questo è un oggetto? :-)
>> sarà dura da digerire, ma si: è un oggetto.
>> $ python
>> Python 2.6 (r26:66714, Nov  3 2008, 12:22:22)
>> [GCC 4.0.1 (Apple Inc. build 5465)] on darwin
>> Type "help", "copyright", "credits" or "license" for more information.
>>>>> def lafunzionechevuoi(): pass
>> ...
>>>>> lafunzionechevuoi.__class__
>> <type 'function'>
>>
>>
>>> Python ha si gli oggetti, li puoi usare dentro codice non ad oggetti,
>> come
>>> liste, ecc, ma non è oggetti puro :-)
>> questo è vero in parte: di che versione parli? :D
>> dalla 2.3 è quasi tutto oggetto (alcuni derivabili e altri no)
>> dalla 2.3 è possibile derivare anche da int, dict e altre classi
>> builtin, tutti di tipo New Style Class
>>
>> le newstyle class si usano derivando da object, e hanno una gestione
>> corretta dell'MRO (la derivazione da più classi base, e che magari si
>> sovrappongo), ed è l'unica dichiarazione possibile in py3k
> 
> 
> per quanto riguarda le nuove versioni non  ho controllato, forse hai
> ragione.
Togli il forse ;)

> Okkio solo che per essere oggetti puro:  devi poter programmare
> esclusivamente ad oggetti e non in modo procedurale, se così è, hai ragione,
> altrimenti no.
Ma anche no.
Che significa programmare ad oggetti?
E' l'usare gli oggetti, entità che incapsulano degli stati e che
esportano delle funzionalità nascondendo l'implementazione.
Occhio che java non è a oggetti[1], almeno in forma completa; indi non
usatelo come esempio di linguaggio ad oggetti.
Quello che ti risulterebbe difficile è programmare in modo funzionale,
python non è il massimo, anche se un minimo di supporto lo ha.

Ocio che programmare ad oggetti non è mettere tutto dentro una classe...
Quello è java...

> E' cmq normale che ci possano essere tipi come in java che sono int ma non
> sono oggetti che invece sono gli Integer.
Ma anche no ;)
In py sono tutti oggetti

Se serve, trovi tutto in intobject.h o longobject.h per gli interi

Quello che non potevi fare una volta era un

class Integer(int):
   pass

ma dovevi fare

class Integer:
   def __init__(self, value):
      self.value = value
   def __add__(self...): ...


> Quello che è sicuro è che c++ non è oggetti puro. :-)
E non ci prova neanche.
Ed è decisamente meglio così

> Le nuove versioni del pitone magari si. :-)
Il pitone è sempre stato ad oggetti.
I moduli sono oggetti
Le funzioni sono oggetti
I metodi sono funzioni, indi oggetti
Le classi sono oggetti
;)

[1] ci si avvicinerebbe se avesse le funzioni first class, ma manca di
tanta altra roba che manco ci si avvicinerebbe comunque

-- 
()_() | That said, I didn't actually _test_ my patch.      | +----
(o.o) | That's what users are for!                         | +---+
'm m' |                                   (Linus Torvalds) |  O  |
(___) |                      raffaele at salmaso punto org |


Maggiori informazioni sulla lista Linux