Lunes 23 de Diciembre de 2024, 04:28
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación Web y Scripting
»
Python
(Moderador:
arielb
) »
importar una clase
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: importar una clase (Leído 13168 veces)
DRiMeR
Nuevo Miembro
Mensajes: 22
importar una clase
«
en:
Miércoles 22 de Abril de 2009, 17:20 »
0
Buenas. Estoy intentando familiarizarme lo más rápido posible con Python para hacer unas prácitcas de criptografía.
La verdad es que me está costando menos de lo que esperaba (será que tampoco estoy buscando cosas muy rebuscadas por ahora), pero aún así me he quedado atascado con el tema de las clases.
Me he creado una
clase
muy simple que se llama Coche, con sus
atributos
"velocidad", "nombre" y "temperatura" (por poner algo) y algunos
métodos
como "acelera" y "frena" para ver que todo encaja.
Mientras lo tenía todo en el mismo script, todo lo que he ido probando me ha funcionado bien. Sin embargo, ha sido intentar separarlo en dos archivos, y ya no consigo que funcione de ninguna forma. Y lo único que he encontrado han sido cosas sobre las librería de python, la diferencia entre el FROM - IMPORT, el IMPORT, y el X=__import__(), y algunas cosas un tanto raras que no he entendido.
Espero que me sepais indicar cómo se hace esto. Si no me equivoco, sería una especie de
import "coche.py"
en el programa principal, que le he llamado
main.py
, pero no sé exactamente con qué sintaxis, o de qué forma se consigue esto.
Gracias de antemano. Un saludo.
Tweet
RadicalEd
Moderador
Mensajes: 2430
Nacionalidad:
Re: importar una clase
«
Respuesta #1 en:
Miércoles 22 de Abril de 2009, 17:38 »
0
Al comienzo del segundo módulo solo debes importar el programa
Código: Python
#Modulo de la clase coche
import
coche
mercedez
=
coche.
Coche
(
parametros
)
#O como se llame la clase
mercedez.
acelera
(
)
mercedez.
frena
De esa forma te mola, no debes importar con comillas ni nada ni tampoco colocando la extensión.py, además debe estar el módulo en el mismo path donde tú main.py o sino el PYTHONPATH de la máquina.
Ojala te sirva.
Chao
El pasado son solo recuerdos, el futuro son solo sueños
DRiMeR
Nuevo Miembro
Mensajes: 22
Re: importar una clase
«
Respuesta #2 en:
Miércoles 22 de Abril de 2009, 17:54 »
0
Lo acabo de probar como has dicho, pero sigue sin funcionarme. También he pensado en probar en vez de
import coche
, ponerle un
from coche import *
. No pensaba que fuera a funcionar, pero por si las moscas.
Lo que no me gustaría es tener que tocar el PATH de la máquina, porque el programa lo voy a tener que estar llevano siempre encima en el pendrive, y si voy a tener que hacerlo así, cada vez que vaya a usar un ordenador de la universidad voy a tener que hacerlo (y puede que no tenga los permisos necesarios, no estoy seguro).
No se si será muy importante o no, pero se me había olvidado dar un par de detalles para aclararlo más. El archivo donde he escrito mi clase se llama
coche
, con minúscula, y la clase es
Coche
, con la mayúscula. También, en el archivo
coche
, he escrito la línea
!/usr/bin/env python
. Lo he probado con la línea y sin la línea, y siempre me da el mismo error:
ImportError: No module named coche
Quizá por ahí esté el fallo, no??
RadicalEd
Moderador
Mensajes: 2430
Nacionalidad:
Re: importar una clase
«
Respuesta #3 en:
Miércoles 22 de Abril de 2009, 18:02 »
0
Mira este código, debe funcionar bien
Código: Python
#Modulo coche.py
#!/usr/bin/env python
class
Coche:
def
__init__
(
self
,
velocidad
,
nombre
,
temperatura
)
:
self
.
velocidad
=
velocidad
self
.
nombre
=
nombre
self
.
temperatura
=
temperatura
def
acelerar
(
self
)
:
self
.
velocidad
+
=
1
print
'La velocidad actual es de '
,
self
.
velocidad
def
frenar
(
self
)
:
if
self
.
velocidad
==
0
:
print
'El carro se ha detenido'
else
:
self
.
velocidad
-
=
1
print
'La velocidad actual es de '
,
self
.
velocidad
#Modulo main.py
#!/usr/bin/env python
import
coche
mercedez
=
coche.
Coche
(
0
,
'Mercedez Benz'
,
15
)
mercedez.
acelerar
(
)
mercedez.
acelerar
(
)
mercedez.
acelerar
(
)
mercedez.
frenar
(
)
Así me funciona, por fa' prueba.
El pasado son solo recuerdos, el futuro son solo sueños
DRiMeR
Nuevo Miembro
Mensajes: 22
Re: importar una clase
«
Respuesta #4 en:
Miércoles 22 de Abril de 2009, 18:45 »
0
Qué bien!! Me funciona!! Muchísimas gracias Edo.
Mi fallo era que no sabía bien como poner la exntensión, el import, etc.. Entonces mi módulo se llamaba sólo
coche
, y el import me fallaba. Ahora sí, le he puesto su extensión correspondiente, y en el main, lo he puesto como
import coche
.
Madre mía, era una tontería, pero como nunca lo he hecho, así me iba xDD
Ya de paso, he logrado comprender realmente la diferencia entre el
from - import
, y el
import
, porque he visto que en tu código, el constructor lo usas así:
Código: Text
mercedez = coche.Coche(0, 'Mercedez Benz', 15)
Efectivamente, así me funciona, pero haciendólo de esta otra forma, también me funciona:
Código: Text
#main.py
......
from coche import *
......
c = Coche('bmw', 0, 50)
Ahí es donde realmente he entendido lo que había leido antes.
Un saludo y muchas gracias por la ayuda.
RadicalEd
Moderador
Mensajes: 2430
Nacionalidad:
Re: importar una clase
«
Respuesta #5 en:
Miércoles 22 de Abril de 2009, 18:49 »
0
No te recomiendo esa forma, por que al final no sabras de que módulo python estás importando las clases.
PD. No es un constructor, es un instanciador de atributos.
El pasado son solo recuerdos, el futuro son solo sueños
DRiMeR
Nuevo Miembro
Mensajes: 22
Re: importar una clase
«
Respuesta #6 en:
Miércoles 22 de Abril de 2009, 19:22 »
0
De acuerdo, gracias por el consejo. Lo haré de esa otra forma entonces.
Respecto al instanciador... estoy acostumbrado a utilizar el nombre "constructor" xDD Procuraré quedarme con los nombres para llamar a cada cosa como se llama.
SAlu2.
RadicalEd
Moderador
Mensajes: 2430
Nacionalidad:
Re: importar una clase
«
Respuesta #7 en:
Miércoles 22 de Abril de 2009, 19:29 »
0
Checa el verdadero
constructor
en Python.
El pasado son solo recuerdos, el futuro son solo sueños
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación Web y Scripting
»
Python
(Moderador:
arielb
) »
importar una clase