[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