[Risolto]Python: interpretare files .py senza idle

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
bracca
Prode Principiante
Messaggi: 86
Iscrizione: giovedì 5 gennaio 2017, 14:25
Desktop: XFCE
Distribuzione: Debian 9.2
Sesso: Maschile

[Risolto]Python: interpretare files .py senza idle

Messaggio da bracca »

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.
Avatar utente
Claudio_F
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1463
Iscrizione: lunedì 28 maggio 2012, 18:49
Desktop: Mate/Gnome
Distribuzione: Ubu22.04

Re: Python: interpretare files .py senza idle

Messaggio da Claudio_F »

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?"
bracca
Prode Principiante
Messaggi: 86
Iscrizione: giovedì 5 gennaio 2017, 14:25
Desktop: XFCE
Distribuzione: Debian 9.2
Sesso: Maschile

Re: Python: interpretare files .py senza idle

Messaggio da bracca »

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.
Avatar utente
Claudio_F
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1463
Iscrizione: lunedì 28 maggio 2012, 18:49
Desktop: Mate/Gnome
Distribuzione: Ubu22.04

Re: Python: interpretare files .py senza idle

Messaggio da Claudio_F »

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).
bracca
Prode Principiante
Messaggi: 86
Iscrizione: giovedì 5 gennaio 2017, 14:25
Desktop: XFCE
Distribuzione: Debian 9.2
Sesso: Maschile

Re: Python: interpretare files .py senza idle

Messaggio da bracca »

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!
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 27 ospiti