modulos importar clases python python-import

python - clases - ¿Cómo importar la clase dentro del mismo directorio o subdirectorio?



clases en python (7)

Python 2

Haga un archivo vacío llamado __init__.py en el mismo directorio que los archivos. Eso significará para Python que está "bien para importar desde este directorio".

Entonces solo haz ...

from user import User from dir import Dir

Lo mismo ocurre si los archivos están en un subdirectorio: coloque un __init__.py en el subdirectorio también, y luego use declaraciones de importación regulares, con notación de puntos. Para cada nivel de directorio, debe agregar a la ruta de importación.

bin/ main.py classes/ user.py dir.py

Entonces, si el directorio se llamara "clases", entonces harías esto:

from classes.user import User from classes.dir import Dir

Python 3

Igual que el anterior, pero prefija el nombre del módulo con un . Si no está utilizando un subdirectorio:

from .user import User from .dir import Dir

Tengo un directorio que almacena todos los archivos .py .

bin/ main.py user.py # where class User resides dir.py # where class Dir resides

Quiero usar clases de user.py y dir.py en main.py.
¿Cómo puedo importar estas clases de Python en main.py ?
Además, ¿cómo puedo importar la clase User si user.py está en un subdirectorio?

bin/ dir.py main.py usr/ user.py


Acabo de enterarme (gracias al comentario de martineau ) que, para importar clases desde archivos dentro del mismo directorio, ahora escribiría en Python 3:

from .user import User from .dir import Dir


En tu main.py :

from user import Class

donde Class es el nombre de la clase que desea importar.

Si desea llamar a un método de Class , puede llamarlo usando:

Class.method

Tenga en cuenta que debe haber un archivo __init__.py vacío en el mismo directorio.


Para hacerlo más simple de entender:

Paso 1: vamos a un directorio, donde se incluirán todos

$ cd /var/tmp

Paso 2: ahora hagamos un archivo class1.py que tenga un nombre de clase Class1 con algún código

$ cat > class1.py <</EOF class Class1: OKBLUE = ''/033[94m'' ENDC = ''/033[0m'' OK = OKBLUE + "[Class1 OK]: " + ENDC EOF

Paso 3: ahora hagamos un archivo class2.py que tenga un nombre de clase Class2 con algún código

$ cat > class2.py <</EOF class Class2: OKBLUE = ''/033[94m'' ENDC = ''/033[0m'' OK = OKBLUE + "[Class2 OK]: " + ENDC EOF

Paso 4: ahora hagamos un main.py que se ejecutará una vez para usar Class1 y Class2 de 2 archivos diferentes

$ cat > main.py <</EOF """this is how we are actually calling class1.py and from that file loading Class1""" from class1 import Class1 """this is how we are actually calling class2.py and from that file loading Class2""" from class2 import Class2 print Class1.OK print Class2.OK EOF

Paso 5: Ejecutar el programa

$ python main.py

La salida sería

[Class1 OK]: [Class2 OK]:


Puede importar el módulo y tener acceso a través de su nombre si no desea mezclar funciones y clases con las suyas.

import util # imports util.py util.clean() util.setup(4)

o puedes importar las funciones y clases a tu código

from util import clean, setup clean() setup(4)

puedes usar wildchar * para importar todo el contenido de ese módulo a tu código

from util import * clean() setup(4)


Simplemente demasiado breve, Cree un archivo __init__.py es el directorio de clases y luego impórtelo a su secuencia de comandos como sigue

from classes.myscript import *


from user import User from dir import Dir