[Python] Classi (Was: Walks like Python. Runs like C.)

Manlio Perillo manlio.perillo a gmail.com
Mer 14 Gen 2015 12:06:13 CET


2015-01-12 21:23 GMT+01:00 Raffaele Salmaso <raffaele a salmaso.org>:

> 2015-01-12 20:08 GMT+01:00 Manlio Perillo <manlio.perillo a gmail.com>:
>
>> Una delle cose (forse l'unica) che non mi piacciono di Python sono le
>> classi
>> alla C++
>>
> Potresti elaborare meglio? Perché non ti piacciono? Come le preferiresti?
>

Le preferisco come sono in Go e Julia, giusto per intenderci.

Go ha le interfacce, che si possono embedare (invece di ereditare).
Le interfacce vengono implementate "nominativamente", ossia un tipo non
dichiara di implementare le interfacce, ma semplicemente ne implementa i
suoi metodi.
I metodi di un tipo si definiscono "fuori" dalla definizione del tipo.
I metodi possono essere definiti solo per i tipi definiti nello stesso
package.
L'ereditarietà non è supportata.
Go supporta solo il dispatch singolo (che diventa polimorfico per le
interfacce), e niente overloading.
Non esiste il concetto di costruttore; per costruire un oggetto si
definisce una funzione apposita (non "attaccata" al tipo).

Julia supporta l'ereditarietà semplice, ma solo per i tipi astratti.
Di nuovo, niente ereditarietà multipla.
I tipi concreti non supportano l'ereditarietà.
I metodi di un tipo si definiscono "fuori" dalla definizione del tipo, con
l'esclusione del costruttore (se ricordo bene).
Julia supporta il multiple dispatching ed i tipi parametrici.
E' possibile definire anche gli operatori (su questo ed altro ricorda
Haskell).
La differenza tra operatori e funzioni è che gli operatori sono infissi.

Il multiple dispatching è il mio preferito, perchè è una generalizzazione
dei singolo dispatch +- overloading.  Però è disponibile in pochissimi
linguaggi, magari c'è la fregatura...


> [...]

Ciao  Manlio
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20150114/687cef19/attachment.html>


Maggiori informazioni sulla lista Python