[Python] come organizzare il codice, file lungo...

Pietro peter.zamb a gmail.com
Mar 7 Ago 2012 16:49:43 CEST


Ciao a tutti!

scusate la domanda da novizio... ma fino ad oggi non mi era mai capitato...

sto partecipando al Google summer of code, in cui sto sviluppando
un'interfaccia python per GRASS (softaware per l'elaborazione di dati
cartografici: raster e vettoriali). Sto lavorando all'implementazione
delle geometrie vettoriali (punti, linee, aree, etc.), al momento il
sorgente è strutturato così [0]:

pygrass/
    vector/
        __init__.py
            * class Vector
        geometry.py
            * class Point
            * class Line
            * class Area
            * etc...

il problema è che il file geometry supera le 1000 righe... pensavo che
potrei trasformare il file geometry.py in una cartella, e creare un
file python per ogni geometria... tipo:

pygrass/
    vector/
        __init__.py
            * class Vector
        geometry/
            point.py
                * class Point
            line.py
                * class Line
            area.py
                * class Area
            etc...

solo che in questo modo l'import di una geometria diventa abbastanza
ripetitivo... tipo:

from pygrass.vector.geometry.point import Point
from pygrass.vector.geometry.line import Line

potrei dividere in sotto file... e nel file __init__.py faccio
l'import di solo quelle classi che mi interessano... chiamando i file
all'interno della cartella con un undescore davanti in modo che siano
non visibili, tipo:

# pygrass/vector/geometry/__init__.py
from _point import Point
from _line import Line
from _area import Arrea
etc..

# pygrass/vector/geometry/_point.py
class Point(object): pass

# pygrass/vector/geometry/_line.py
class Line(object): pass

etc...

in questo modo potrei importare le mie classi con: ::

from pygrass.vector.geometry import Point, Line, Area, etc

C'è un modo che vi sentireste di suggerire rispetto ad un altro? è
solo questione di gusti personali?
c'è un metodo più pythonico dell'altro? uno che è meglio evitare?
Mi tengo il file lungo? :-)

Ogni suggerimento è il ben venuto...

buon pomeriggio.

Pietro

[0] http://code.google.com/p/pygrass/source/browse/pygrass/vector/


Maggiori informazioni sulla lista Python