2016-08-12 20:32 GMT+02:00 Giuliano Curti <giulian...@gmail.com>: > On 8/12/16, Manlio Perillo <manlio.peri...@gmail.com> wrote: > > ciao Manlio, > >> 2016-08-11 23:17 GMT+02:00 Giuliano Curti <giulian...@gmail.com>: >>> ... >> >> ....... >> >> 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