modulos - python run main
Llamando si__name__== ''__main__'': en un módulo de una función en otro módulo (2)
El if __name__ == ''__main__''
se usa principalmente para hacer un solo script de python ejecutable. Por ejemplo, define una función que hace algo, la usa importándola y ejecutándola, pero también desea que esa función se ejecute cuando ejecuta su secuencia de comandos python module1.py
con python module1.py
.
Para la pregunta que me hizo, lo mejor que pude llegar es que quería que se ejecutara una función definida en "module1.py" cuando invocó "module2.py". Eso sería algo como esto:
### module1.py:
def main():
# does something
...
if __name__ == ''__main__'':
main()
### module2.py:
from module1 import main as main_from_module_one
if __name__ == ''__main__'':
main_from_module_one() # calling function main defined in module1
Necesito llamar if __name__ == ''__main__''
, que llama a varias clases en un módulo, Module 1
, en una función, function1
, que está en una clase en un segundo módulo, Module 2
.
No puedo usar def main()
- solution en el Module 1
lugar de if __name__ == ''__main__''
, ya que el módulo tiene varias clases y funciones conectadas a Class_1
en el Module 1
que solo funciona con print(''I am:'', __name__)
y if __name__ == ''__main__'':
Entonces mi pregunta es cómo puedo llamar main: if __name__ == ''__main__''
de Class_1()
en function1
en Class_2()
en el Module 2
?
Módulo 1
print(''I am:'', __name__)
class Class_1():
....code...
# calling everything in the module that
if __name__ == ''__main__'':
Módulo 2
# if __name__ == ''__main__'' from Module 1 should be called in function 1
class Class_2():
.... code..
def function1:
--- calling main if __name__ == ''__main__'' from Module 1
El objetivo de if __name__...
es que es solo para cosas que solo se necesitan cuando el módulo se ejecuta como un script, es decir, exactamente si no se está importando de otra clase. Entonces no, no necesitas hacer esto.
Tu explicación de por qué no puedes poner cosas en una función no tiene sentido; eso es exactamente lo que deberías hacer.