es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo importar una clase con composición desde un módulo?

Suponiendo que tengo un módulo example.py con las siguientes dos clases. Una contiene a la otra:

#example.py
class Employee():
    def __init__(self,name):
        Self.name=name

class Company():
    def __init__(self,company,boss):
        Self.company=company
        self.boss = Employee(boss)

Si quiero instanciar la compañía en otro archivo llamado work.py, escribo lo siguiente:

#work.py
from example import Company
mycompany=company('bmw', 'michael')

Este código parece funcionar. ¿Cómo sabe Python acerca de la clase Employee en el archivo work.py?

¿Sería el código más “seguro” en work.py si hago lo siguiente?

from example import Company, Employee
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    No es necesario que Python conozca la clase Employee en el archivo work.py, ya que está importada como parte de la clase Company en el módulo example.py. Cuando creamos una instancia de Company en work.py, se llama al método __init__ de Company, que a su vez crea una instancia de Employee como atributo de boss. Esto es posible porque Python ya tiene acceso a la clase Employee a través de la clase Company en el módulo example.py.

    Sin embargo, siempre es buena práctica importar todas las clases y funciones que se usan en un módulo en la parte superior del mismo. Esto hace que el código sea más legible y más fácil de mantener. Por lo tanto, importar Employee junto con Company en work.py sería un enfoque más seguro, ya que aclara que ambas clases se están utilizando en el módulo.

Comments are closed.