Python - почему я могу импортировать модули без __init__.py вообще?
Я новичок в Python и до сих пор не могу понять, зачем нам__init__.py
файл для импорта модулей. Я прошел через другие вопросы и ответы, такие какэтот.
Что меня смущает, так это то, что я могу импортировать свои модулибез __init__py
, такзачем мне это вообще нужно?
Мой пример,
index.py
modules/
hello/
hello.py
HelloWorld.py
index.py,
import os
import sys
root = os.path.dirname(__file__)
sys.path.append(root + "/modules/hello")
# IMPORTS MODULES
from hello import hello
from HelloWorld import HelloWorld
def application(environ, start_response):
results = []
results.append(hello())
helloWorld = HelloWorld()
results.append(helloWorld.sayHello())
output = "<br/>".join(results)
response_body = output
status = '200 OK'
response_headers = [('Content-Type', 'text/html'),
('Content-Length', str(len(response_body)))]
start_response(status, response_headers)
return [response_body]
Модули / привет / hello.py,
def hello():
return 'Hello World from hello.py!'
Модули / привет / HelloWorld.py,
# define a class
class HelloWorld:
def __init__(self):
self.message = 'Hello World from HelloWorld.py!'
def sayHello(self):
return self.message
Результат,
Hello World from hello.py!
Hello World from HelloWorld.py!
Что нужно, это только эти две строки,
root = os.path.dirname(__file__)
sys.path.append(root + "/modules/hello")
Без каких-либо__init__py
, Может кто-нибудь объяснить, почему это работает таким образом?
Если__init__py
правильно, что я должен делать / изменять в моем коде?