Programación Web y Scripting > Python
importar una clase
DRiMeR:
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.
RadicalEd:
Al comienzo del segundo módulo solo debes importar el programa
--- Código: Python ---#Modulo de la clase cocheimport coche mercedez = coche.Coche(parametros) #O como se llame la clasemercedez.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
DRiMeR:
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:
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.
DRiMeR:
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.
Navegación
[#] Página Siguiente
Ir a la versión completa