[Risolto]Python: interpretare files .py senza idle

Linguaggi di programmazione: php, perl, python, C, bash, ecc.

[Risolto]Python: interpretare files .py senza idle

Messaggioda bracca » venerdì 21 aprile 2017, 18:08

Volevo chiedere se fosse possibile creare diversi file .py inerenti ad un unico progetto utilizzando un semplice editor di testo e compilando direttamente dalla bash di ubuntu, mi spiego meglio con un esempio.

Ho un progetto con tre diversi file .py nella stessa directory: il main, la classe Persona e la sottoclasse Studente.
Il mio obiettivo è quello di "importare" la classe Persona all'interno di Studente in modo che possa ereditare (un po' come in C++ viene usata la direttiva #include FILENAME__H) e di "far vedere" entrambe le classi al main in modo da poter richiamare metodi vari e stampa.

È quindi possibile "importare" tutte le definizioni nel main e far partire l'interpretazione dal terminale col comando
Codice: Seleziona tutto
python main.py
in modo che restituisca tutto quello che è presente nel main, senza dover usare un IDLE?
Ultima modifica di bracca il sabato 22 aprile 2017, 16:16, modificato 1 volta in totale.
bracca
Prode Principiante
 
Messaggi: 46
Iscrizione: gennaio 2017
Desktop: Xubuntu
Distribuzione: Ubuntu 16.0401 i686
Sesso: Maschile

Re: Python: interpretare files .py senza idle

Messaggioda Claudio_F » venerdì 21 aprile 2017, 19:27

Tutto quello che hai detto è possibile, cosa che si vede con una semplice prova che avrai sicuramente fatto. Quindi mi domando: "cosa non ha funzionato per far supporre che non sia possibile?" Ipotizzo sia il fatto che import funziona in modo diverso da include (almeno l'include del C, C++ non so). E quindi la domanda diventa: "Come hai scritto gli import? Come ti aspetti che funzionino?"
Avatar utente
Claudio_F
Entusiasta Emergente
Entusiasta Emergente
 
Messaggi: 1279
Iscrizione: maggio 2012
Desktop: Unity/Mate
Distribuzione: Ubuntu14.04/Mint17

Re: Python: interpretare files .py senza idle

Messaggioda bracca » venerdì 21 aprile 2017, 23:18

cosa non ha funzionato per far supporre che non sia possibile?

Ad esempio, nella sottoclasse ho scritto
Codice: Seleziona tutto
import persona
ma poi ho creato la classe derivata con
Codice: Seleziona tutto
class Studente(Persona):
e lì mi restituisce un errore, sostenendo di non aver dichiarato "Persona"

---EDIT---
Sono un id***a: avrei dovuto usare
Codice: Seleziona tutto
class Studente(persona.Persona)
anche se non mi è ancora troppo chiaro il motivo.
bracca
Prode Principiante
 
Messaggi: 46
Iscrizione: gennaio 2017
Desktop: Xubuntu
Distribuzione: Ubuntu 16.0401 i686
Sesso: Maschile

Re: Python: interpretare files .py senza idle

Messaggioda Claudio_F » domenica 23 aprile 2017, 11:16

bracca ha scritto:avrei dovuto usare
Codice: Seleziona tutto
class Studente(persona.Persona)
anche se non mi è ancora troppo chiaro il motivo.

"import modulo" rende visibile l'oggetto "modulo" al programma, ma le cose contenute vanno specificate esplicitamente.

Ci sarebbe la possibilità di usare lo star import:
Codice: Seleziona tutto
from modulo import *
ma è una pratica non corretta, perché se si importano diversi moduli in questa maniera, e due di essi contengono nomi identici, il secondo import sovrascriverà i nomi comuni presenti nel primo.

Bisogna sempre ricordare che in Python ogni nome, a parte le parole riservate del linguaggio, può essere "ridefinito" con una nuova definizione / assegnamento / import, compresi i nomi delle funzioni predefinite, ad esempio è lecito scrivere input=3 perdendo così la possibilità di usare in modo immediato la funzione input (anche se si riuscirebbe ancora a chiamarla con __builtins__.input(), sarebbe da parlare di namespace e precedenza nella risoluzione dei nomi).
Avatar utente
Claudio_F
Entusiasta Emergente
Entusiasta Emergente
 
Messaggi: 1279
Iscrizione: maggio 2012
Desktop: Unity/Mate
Distribuzione: Ubuntu14.04/Mint17

Re: Python: interpretare files .py senza idle

Messaggioda bracca » domenica 23 aprile 2017, 15:06

se si importano diversi moduli in questa maniera, e due di essi contengono nomi identici, il secondo import sovrascriverà i nomi comuni presenti nel primo.


Tutto chiaro, grazie!
bracca
Prode Principiante
 
Messaggi: 46
Iscrizione: gennaio 2017
Desktop: Xubuntu
Distribuzione: Ubuntu 16.0401 i686
Sesso: Maschile


Torna a Programmazione

Chi c’è in linea

Visualizzano questa sezione: 0 utenti registrati e 12 ospiti