Llamando si __name__ == ‘__main__’: en un módulo desde una función en otro módulo

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() : solución 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__':

Así que mi pregunta es cómo puedo llamar a 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 if __name__ == '__main__' se usa principalmente para hacer un único 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 hizo, lo mejor que se me ocurrió es que deseaba que se ejecutara una función definida en “module1.py” al invocar “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 

El punto if __name__... es que se trata de 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. Así que no, no necesitas hacer esto.

Su explicación de por qué no puede poner las cosas en una función no tiene sentido; Eso es exactamente lo que debes hacer.