PDA

View Full Version : Import in Python


Eln
21-10-2012, 18:06
Ciao ragazzi, negli ultimi giorni mi sono informato su questo linguaggio. Sinceramente ho già letto qualcosa nei ritagli di tempo e ammetto che diversi aspetti mi affascinano molto.

Oggi avendo un pò di tempo ho deciso di iniziare a mettere un pò mano al codice. Ho scaricato il plugin PyDev per eclipse e creato un semplice progetto di test. Provando a fare gli import mi sono però imbattuto in un errore e proprio non riesco a capire dove sbagliato.

Vi spiego meglio, ho creato un progetto e un package di test (nome test), qui ho un modulo __init__.py. Successivamente ho creato un modulo classe, Punto, con dentro la relativa classe Punto. Ora non ho praticamente nemmeno creato il costruttore. Ho provato ad importare la classe nel file __init__.py attraverso.

import Punto.Punto e ottengo il seguente errore:

Traceback (most recent call last):
File "D:\xampp\htdocs\python\test\test\__init__.py", line 1, in <module>
import Punto.Punto
ImportError: No module named Punto

Stesso errore se creo un modulo main e provo ad importare. Ho provato a cercare in giro ma i consigli mi sembrano tutti abbastanza dispersivi. Qualcuno può dirmi dove sbaglio?

Sicuramente è qualcosa di stupido ma è domenica pomeriggio, sono mezzo influenzato e magari non riesco a vedere io dove è l'errore :mbe:

ps: Con il compilatore automatico di ecplise in __init__.py mi vede sia il modulo che la classe che provo ad importare. :mbe:

Eln
21-10-2012, 18:24
Vabbhe nulla ho risolto, sbagliavo il modo in cui importavo la classe. Se dovesse servire ad altri in futuro, la sintassi corretta è

from nomeModulo import nomeClasse

a questo punto mi è solo poco chiaro cosa importo con

import nomeModulo.nomeClasse

Invece la sintassi corretta per importare da un'altro package quale sarebbe??

cdimauro
21-10-2012, 19:10
a questo punto mi è solo poco chiaro cosa importo con

import nomeModulo.nomeClasse
Nulla. Ti darebbe errore, perché nomeClasse suppongo sia una classe, mentre import si aspetta che sia un modulo.
Invece la sintassi corretta per importare da un'altro package quale sarebbe??
from package.module1.module2....modulen import classn
Oppure:
import package.module1.module2....modulen

Instance = package.module1.module2....modulen.classn()

Eln
22-10-2012, 09:00
Capito, grazie mille :D

Per alcune cose come la mancanza delle classi abstract e dei modificatori di accesso resto ancora un filo spaesato. Fantastica invece l'ereditarietà multipla.

Non vedo l'ora di iniziare a fare qualcosa lato web, peccato che in ufficio siamo in consegna :muro:

cdimauro
22-10-2012, 09:51
Per il web hai l'imbarazzo della scelta, perché ci sono tanti framework e altri ne spuntano.

Riguardo a classi astratte e modificatori, beh, la cosa più semplice da fare è... dimenticarli. :p

Eln
22-10-2012, 10:53
Per il web hai l'imbarazzo della scelta, perché ci sono tanti framework e altri ne spuntano.

Riguardo a classi astratte e modificatori, beh, la cosa più semplice da fare è... dimenticarli. :p

Sisi, infatti ieri mi sono documentato anche sui vari framework. Penso che per ora mi orienterò verso Flask, dato che vorrei lavorare su cose non enormi sinceramente mi sembrava inutile mettermi a studiare Django et simila. E comunque da quello che ho visto è utilizzabile anche per piattaforme di un certo livello.

Per i modificatori ok cercherò di dimenticarli, per le classi astratte ne facevo un discreto uso :D

cdimauro
22-10-2012, 14:01
Flask è ottimo. Piccolo e semplice da usare. L'ho visto quest'anno all'EuroPython.