Re: [Python] python e classi

2016-08-12 Per discussione Giuliano Curti
On 8/12/16, Manlio Perillo  wrote:

ciao Manlio,
grazie, ovviamente nella risposta mi limito alle cose che capisco :-)


> .
> Che intendi con chiamare la classe Digraph?

intendo che all'interno del metodo X  (della classe Graph()) genero un
elemento di classe Digraph() sul quale quindi eseguo dei metodi di
questa seconda classe per poi buttare tutto ecc. ecc..


> Comunque creare un clone non basta; non devi anche aggiungere le
> informazioni sull'orientamento?

sì, certo; copio i dati del grafo, ricostruisco le informazioni
aggiuntive ecc. ecc.


>> 
>
> Secondo me ti fai troppi problemi :).

se sei passato anche tu dalla categoria dei neofiti dovresti sapere
che questo è uno dei problemi principali :-)


> Io sceglierei tra due soluzioni:
>
> 1) Dato che build_digraph "conosce" [1] la rappresentazione interna
> di Graph e DiGraph, può semplicemente creare un oggetto DiGraph
> partendo di vertici del grafo originale e aggiungendo i dati per
> l'orientamento.

ero orientato su questa soluzione;


> .. Se il metodo Y non modifica il grafo non hai nemmeno
> bisogno di clonare il grafo di partenza (assumo tu sappia cosa si
> intenda per
> clonare, in Python)

be, il dubbio è legittimo, cmq ci ho procedure che modificano i dati
di partenza; adesso non ricordo il caso preciso però nel dubbio
clonavo per lasciare i dati originali indenni;


> 2) Aggiungere un metodo statico alla classe DiGraph,..

ecco, quì sono scoperto: ammetto di non sapere bene la distinzione fra
i metodi "statici" e gli altri che immaginano si chiameranno
"dinamici" :-) se vuoi illuminanrmi (o darmi riferimenti) grazie);


> Ciao  Manlio

ciao,
giuliano
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] python e classi

2016-08-12 Per discussione Manlio Perillo
2016-08-12 20:32 GMT+02:00 Giuliano Curti :
> On 8/12/16, Manlio Perillo  wrote:
>
> ciao Manlio,
>
>> 2016-08-11 23:17 GMT+02:00 Giuliano Curti :
>>> ...
>>
>> ...
>>
>> In questo caso la cosa più semplice da fare mi sembra:
>>
>> class Graph:
>> def X(self):
>> g = build_digraph(self)
>>
>> return g.Y()
>
> perfetto, hai centrato il problema;
>
>
>> Su come implementare build_digraph si potrebbe aprire probabilmente un
>> thread separato, dato che immagino tocca parti private
>> dell'implementazione di Graph e magari anche DiGraph.
>
> io immaginavo appunto una funzione toDigraph() (guarda che
> immaginazione :-) nella quale chiamavo la classe Digraph() per creare
> un quasi clone del mio grafo originario, eseguire le calcolazioni e
> poi buttare tutto conservando il solo risultato;
>

Che intendi con chiamare la classe Digraph?
Comunque creare un clone non basta; non devi anche aggiungere le
informazioni sull'orientamento?

> il dubbio che mi veniva era che questo metodo toDigraph() chiamava la
> classe Digraph() che era a sua volta costruita sulla classe Graph()
> che è quella chiamante, una specie di mostro semantico (almeno per me
> a digiuno di classi): ovviamente posso provare, se gira bene
> altrimenti adotto un'altra strada;
>

Secondo me ti fai troppi problemi :).

Io sceglierei tra due soluzioni:

1) Dato che build_digraph "conosce" [1] la rappresentazione interna
di Graph e DiGraph, può semplicemente creare un oggetto DiGraph
partendo di vertici del grafo originale e aggiungendo i dati per
l'orientamento. Se il metodo Y non modifica il grafo non hai nemmeno
bisogno di clonare il grafo di partenza (assumo tu sappia cosa si
intenda per
clonare, in Python)

2) Aggiungere un metodo statico alla classe DiGraph, from_simple_graph,
che accetta una instanza di Graph ed i dati per l'orientamento, e
restituisce un nuovo DiGraph.
Questa sembra la soluzione "alla moda"; a me non piace e cerco di evitare
metodi statici.


[1] In realtà in Python tutti conoscono e possono accedere alla
rapresentazione interna di una classe,
 ma solo il codice nello stesso package dovrebbe accederci.


Ciao  Manlio
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] python e classi

2016-08-12 Per discussione Giuliano Curti
On 8/12/16, Manlio Perillo  wrote:

ciao Manlio,

> 2016-08-11 23:17 GMT+02:00 Giuliano Curti :
>> ...
>
> ...
>
> In questo caso la cosa più semplice da fare mi sembra:
>
> class Graph:
> def X(self):
> g = build_digraph(self)
>
> return g.Y()

perfetto, hai centrato il problema;


> Su come implementare build_digraph si potrebbe aprire probabilmente un
> thread separato, dato che immagino tocca parti private
> dell'implementazione di Graph e magari anche DiGraph.

io immaginavo appunto una funzione toDigraph() (guarda che
immaginazione :-) nella quale chiamavo la classe Digraph() per creare
un quasi clone del mio grafo originario, eseguire le calcolazioni e
poi buttare tutto conservando il solo risultato;

il dubbio che mi veniva era che questo metodo toDigraph() chiamava la
classe Digraph() che era a sua volta costruita sulla classe Graph()
che è quella chiamante, una specie di mostro semantico (almeno per me
a digiuno di classi): ovviamente posso provare, se gira bene
altrimenti adotto un'altra strada;

mi sembrava più intelligente prima di fare prove a capocchia chiedere
a quelli più esperti :-)


> Ciao  Manlio

grazie infinite, ciao,
giuliano
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] python e classi

2016-08-12 Per discussione Manlio Perillo
2016-08-11 23:17 GMT+02:00 Giuliano Curti :
> ciao,
> intanto grazie della risposta;
>> [...]
> sto implementando una libreria per trattare i grafi; è un esercizio a
> scopo autodidattico da cui avrei voluto tenervi indenni, ma.
> ovviamente qualsiasi hint anche sullo specifico dei grafi è benvenuto;
> tornando al dunque:
>
> allora, ho generato la classe Graph() che ha una certa struttura dati
> ed implementa alcuni metodi; argomento molto legato, ma non
> coincidente, è quello dei grafi orientati ed ho generato la classe
> Digraph() che si basa sulla prima, ne incrementa la struttura dati
> (aggiunge delle liste non necessarie per i grafi), eredita i metodi
> della precedente ed implementa alcuni metodi specifici, ad es. sui
> flussi;
>
> orbene, per un (noto) teorema una forma di connettività dei grafi
> (siamo nella classe Graph()) corrisponde ad una forma particolare di
> calcolo di flusso (metodo disponibile nella classe Digraph()), da quì
> la domanda di come attingere a metodi della classe derivata Digraph()
> all'interno della classe Graph();
>

Dimenticando per un momento le classi e le loro relazioni, vuoi
calcolare una proprietà X di un grafo semplice, e questa proprietà può
essere calcolata tramite la proprietà Y di un grafo orientato
costruito a partire dal grafo semplice.

In questo caso la cosa più semplice da fare mi sembra:

class Graph:
def X(self):
g = build_digraph(self)

return g.Y()

Su come implementare build_digraph si potrebbe aprire probabilmente un
thread separato, dato che immagino tocca parti private
dell'implementazione di Graph e magari anche DiGraph.


Ciao  Manlio
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] python e classi

2016-08-12 Per discussione Giuliano Curti
On 8/12/16, Pietro Brunetti  wrote:

ciao Pietro,
temo mi sia sfuggita questo tuo post :-(  accidenti, trovo molto
scomoda ed antipatica la gestione imap della posta, ero così ben
abituato con il classico pop ma da qualche tempo non c'è verso: non
capisco se è cambiata la policy di gmail o se il mio (vecchio) sistema
ha qualche difetto nelle gestione dell'autenticazione, bah.
(scusate lo sfogo :-)


> QGIS e reti? Spiegati, le reti sono topologiche, le mappe geometriche

volentieri; certo QGIS gestisce le mappe, raster e vettoriali; fra
queste ultime non è difficile immaginare anche le reti; infatti lo fa
già con una funzione di routing, presa da postgresql credo, che
implementa Djkstra; non mi dispiacerebbe contribuire ad allargare il
ventaglio estendendo a grafi generici (magari a scopo didattico) e
soprattutto a grafi orientati e reti: ad es. line-connectivity,
point-connectivity, cutpoints, bridges, spanning tree, calcolo dei
flussi, ecc. ecc. questa l'intenzione, per l'applicazione vedremo.
:-)


grazie, ciao,
giuliano
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] python e classi

2016-08-12 Per discussione Pietro Brunetti
Ops...

2016-08-12 10:09 GMT+02:00 Carlos Catucci :

> 2016-08-12 10:08 GMT+02:00 Pietro Brunetti :
> > QGIS e reti? Spiegati, le reti sono topologiche, le mappe geometriche
>
> Ma sei impazzito? Fare top quoting con Gollum sveglio e attivo? ;)
>
> Carlos
> --
> EZLN ... Para Todos Todo ... Nada para nosotros
> ___
> Python mailing list
> Python@lists.python.it
> http://lists.python.it/mailman/listinfo/python
>



-- 
There is a crack, a crack in everything. That’s how the light gets in
L. Cohen
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] python e classi

2016-08-12 Per discussione Carlos Catucci
2016-08-12 10:08 GMT+02:00 Pietro Brunetti :
> QGIS e reti? Spiegati, le reti sono topologiche, le mappe geometriche

Ma sei impazzito? Fare top quoting con Gollum sveglio e attivo? ;)

Carlos
-- 
EZLN ... Para Todos Todo ... Nada para nosotros
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] python e classi

2016-08-12 Per discussione Carlos Catucci
2016-08-12 10:07 GMT+02:00 Pietro Brunetti :
> Io complicherei la vita, introdurrei una classe genitore. Sia A che B
> ereditano da questa classe. Sposterei i metodi comuni
> dentro genitore, quelli specifichi e quelli da sovrascrivere avranno il loro
> spazio in A e B.

A me pare che la complicheresti volontariamente e senza necessita'
reale di farlo, ma attendo che i Guru della lista esprimano il loro
illuminato parere

Carlos
-- 
EZLN ... Para Todos Todo ... Nada para nosotros
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] python e classi

2016-08-12 Per discussione Pietro Brunetti
QGIS e reti? Spiegati, le reti sono topologiche, le mappe geometriche

Il giorno 12 agosto 2016 10:06, Giuliano Curti  ha
scritto:

> On 8/12/16, Gollum1  wrote:
>
> ciao Gollum,
> ci siamo incrociati anche da altre parti :-) grazie (anche a Carlos)
>
>
> > Il giorno 12/ago/2016 09:32, "Giuliano Curti"  ha
> > scritto:
> >>
> >> ..
> >
> > Vuol dire che la struttura della classe è mal posta, se la classe
> > principale ha bisogno dei Merisi della classe derivata, vuol dire che
> quei
> > metodi devono stare nella classe principale (evidentemente anche la
> > struttura dati).
> > 
>
> quindi la tua opinione è quella di una classe onnicomprensiva, almeno
> per la struttura dati, eventualmente distinta (ammesso sia utile e
> ragionevole) per i metodi, ma con i metodi condivisi collocati nella
> classe base;
>
> ultimo timido tentativo: troveresti quindi disdicevole il ricorso,
> anche temporaneo, all'interno della classe base di metodi della classe
> derivata;
>
> grazie a tutti, mi avete dato argomenti su cui riflettere(*);
> ciao,
> giuliano
>
>
> (*) l'idea è di arrivare ad un plugin per QGIS in cui trattare grafi /
> grafi orientati / reti; chiunque fosse interessato a collaborare è il
> benvenuto :-)
> ___
> Python mailing list
> Python@lists.python.it
> http://lists.python.it/mailman/listinfo/python
>



-- 
There is a crack, a crack in everything. That’s how the light gets in
L. Cohen
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] python e classi

2016-08-12 Per discussione Carlos Catucci
2016-08-12 10:06 GMT+02:00 Giuliano Curti :
> (*) l'idea è di arrivare ad un plugin per QGIS in cui trattare grafi /
> grafi orientati / reti; chiunque fosse interessato a collaborare è il
> benvenuto :-)


Ada vere:

1. tempo
2. capacita' necessarie

sarebbe davvero interessante

Carlos
-- 
EZLN ... Para Todos Todo ... Nada para nosotros
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] python e classi

2016-08-12 Per discussione Giuliano Curti
On 8/12/16, Gollum1  wrote:

ciao Gollum,
ci siamo incrociati anche da altre parti :-) grazie (anche a Carlos)


> Il giorno 12/ago/2016 09:32, "Giuliano Curti"  ha
> scritto:
>>
>> ..
>
> Vuol dire che la struttura della classe è mal posta, se la classe
> principale ha bisogno dei Merisi della classe derivata, vuol dire che quei
> metodi devono stare nella classe principale (evidentemente anche la
> struttura dati).
> 

quindi la tua opinione è quella di una classe onnicomprensiva, almeno
per la struttura dati, eventualmente distinta (ammesso sia utile e
ragionevole) per i metodi, ma con i metodi condivisi collocati nella
classe base;

ultimo timido tentativo: troveresti quindi disdicevole il ricorso,
anche temporaneo, all'interno della classe base di metodi della classe
derivata;

grazie a tutti, mi avete dato argomenti su cui riflettere(*);
ciao,
giuliano


(*) l'idea è di arrivare ad un plugin per QGIS in cui trattare grafi /
grafi orientati / reti; chiunque fosse interessato a collaborare è il
benvenuto :-)
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] python e classi

2016-08-12 Per discussione Gollum1
Il giorno 12/ago/2016 09:32, "Giuliano Curti"  ha
scritto:
>
> On 8/12/16, Daniele Zambelli  wrote:
>
> grazie anche a te, Daniele
>
>
> > Il 11 agosto 2016 22:00, Giuliano Curti  ha
scritto:
> >> ora però ho bisogno che la classe A utilizzi dei metodi della classe
> >> B, quindi intravedo questa situazione:
> >> A usa qualche volta B
> >> B usa sempre A
> >
> > Secondo me, i metodi di B che A usa "qualche volta", li sposti dentro
> > A quindi la situazione diventa:
> > A usa sempre i metodi di A
> > B usa oltre ai metodi di A anche i suoi metodi specifici.
>
> ovviamente valuterò con più attenzione il tuo suggerimento, ma sui due
> piedi farei questa obiezione (ovviamente non per saccenza e meno
> ancora per polemica, ma solo per affinare la soluzione migliore :-): i
> metodi di B che A dovrebbe usare presuppongono una struttura dati
> specifica, quella di B, per cui tanto varrebbe pensare ad una unica
> classe, come ipotizzato nella aggiunta al mio post: valuterò entrambe
> le situazioni, se ti/vi venisse in mente altro, ti/vi ringrazio
> anticipatamente della condivisione :-)

Vuol dire che la struttura della classe è mal posta, se la classe
principale ha bisogno dei Merisi della classe derivata, vuol dire che quei
metodi devono stare nella classe principale (evidentemente anche la
struttura dati).
Una classe la derivi solo se devi estenderla, ma se l'estensione influisce
sulla classe principale, va implementata nella principale. Se poi significa
non avere una derivata, pazienza...
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] python e classi

2016-08-12 Per discussione Giuliano Curti
oopss.

On 8/12/16, Giuliano Curti  wrote:
> On 8/12/16, Daniele Zambelli  wrote:
>
> ...
>
>> Il 11 agosto 2016 22:00, Giuliano Curti  ha
>> scritto:
>>> ...

>> giusto!
>> nel verso
>> forse è perché non guardiamo le cose
>> Quando non ci capiamo,
>
> anche il motto, lo trovo molto appropriato: ... fosse che nelle
> scuole, anzichè ostinarsi alla pedissequa ripetizione, insegnassero
> questo :-)

oopss... ho visto la tua pagina: tu insegni, quindi fortunati i tuoi
ragazzi che avranno certamente questo saggio insegnamento :-) :-)

ciao,
g
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] python e classi

2016-08-12 Per discussione Giuliano Curti
On 8/12/16, Daniele Zambelli  wrote:

grazie anche a te, Daniele


> Il 11 agosto 2016 22:00, Giuliano Curti  ha scritto:
>> ora però ho bisogno che la classe A utilizzi dei metodi della classe
>> B, quindi intravedo questa situazione:
>> A usa qualche volta B
>> B usa sempre A
>
> Secondo me, i metodi di B che A usa "qualche volta", li sposti dentro
> A quindi la situazione diventa:
> A usa sempre i metodi di A
> B usa oltre ai metodi di A anche i suoi metodi specifici.

ovviamente valuterò con più attenzione il tuo suggerimento, ma sui due
piedi farei questa obiezione (ovviamente non per saccenza e meno
ancora per polemica, ma solo per affinare la soluzione migliore :-): i
metodi di B che A dovrebbe usare presuppongono una struttura dati
specifica, quella di B, per cui tanto varrebbe pensare ad una unica
classe, come ipotizzato nella aggiunta al mio post: valuterò entrambe
le situazioni, se ti/vi venisse in mente altro, ti/vi ringrazio
anticipatamente della condivisione :-)


> Ciao
> Daniele

grazie, ciao,
giuliano


> www.fugamatematica.blogspot.com

guarderò la tua pagina :-)

> giusto!
> nel verso
> forse è perché non guardiamo le cose
> Quando non ci capiamo,

anche il motto, lo trovo molto appropriato: ... fosse che nelle
scuole, anzichè ostinarsi alla pedissequa ripetizione, insegnassero
questo :-)
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] python e classi

2016-08-12 Per discussione Daniele Zambelli
Il 11 agosto 2016 22:00, Giuliano Curti  ha scritto:
> ora però ho bisogno che la classe A utilizzi dei metodi della classe
> B, quindi intravedo questa situazione:
> A usa qualche volta B
> B usa sempre A

Secondo me, i metodi di B che A usa "qualche volta", li sposti dentro
A quindi la situazione diventa:
A usa sempre i metodi di A
B usa oltre ai metodi di A anche i suoi metodi specifici.

Ciao

-- 

Daniele

www.fugamatematica.blogspot.com

giusto!
nel verso
forse è perché non guardiamo le cose
Quando non ci capiamo,
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python