Re: [Python] python e classi
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 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
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-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
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
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
Non sempre less è more. ^_^ Mi piace come disegno software. Avere una classe radice mi permette di essere molto più fantasioso nelle clessi "concrete". Il giorno 12 agosto 2016 10:08, Carlos Catucci ha scritto: > 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 > -- 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 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 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
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 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
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. Il giorno 12 agosto 2016 09:42, Gollum1 ha scritto: > > 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 > > -- 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
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
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 9:32 GMT+02:00 Giuliano Curti : > 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 :-) Penso che tu non ti sia chiaro cosa intendeva Daniele. Senza scomodare ereditarieta' multiple o forkate, lui dice una cosa del tipo hai alcuni metodi che usa solo la classe A hai altri metodi che usa solo la classe B ne hai altri ancora che usano A e B Quelli usati da A solamente vanno in A Quelli usati da B solamente vanno in B Quelli usati da entrambi vanno in A perche' B ereditando da A li hanno anch'essi. Se poi il metodo X di A in B deve fare qualcosa di leggermente diverso, puoi ridefinirlo e usarlo quando serve, mentre se ti serve di usare, da B, il metodo X di A puoi farlo sempre invocando il super ovvero specificando che vuoi usare quello del parent. 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
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
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