Bibliotecas y marcos suelen utilizar el código de inicialización en __init__.py
archivos para ocultar cuidadosamente la estructura interna y proporcionar una interfaz uniforme para el usuario.
Tomemos el ejemplo de Django forma módulo. Varias funciones y clases en el módulo de formularios se definen en diferentes archivos según su clasificación.
forms/
__init__.py
extras/
...
fields.py
forms.py
widgets.py
...
Ahora bien, si usted fuera a crear un formulario, usted tendría que saber en qué archivo cada función se define y su código para crear un formulario de contacto tendrá que ser algo como esto (lo cual es un inconveniente y feo) .
class CommentForm(forms.forms.Form):
name = forms.fields.CharField()
url = forms.fields.URLField()
comment = forms.fields.CharField(widget=forms.widgets.Textarea)
En cambio, en Django que sólo puede referirse a los widgets diversos campos, formularios, etc. directamente desde el espacio de nombres de formas.
from django import forms
class CommentForm(forms.Form):
name = forms.CharField()
url = forms.URLField()
comment = forms.CharField(widget=forms.Textarea)
¿Cómo es esto posible? Para hacer esto posible, Django agrega la siguiente instrucción para forms/__init__.py
archivo que importan todos los aparatos, formularios, campos etc., en el espacio de nombres forms
.
from widgets import *
from fields import *
from forms import *
from models import *
Como se puede ver, esto simplifica su vida cuando se crean las formas, porque ahora usted no tiene que preocuparse en donde se define cada función/clase y sólo tiene que utilizar todos estos directamente desde forms
espacio de nombres. Este es solo un ejemplo, pero puede ver ejemplos como estos en otros marcos y bibliotecas.
posible duplicado de (http://stackoverflow.com/questions/448271/what [¿qué es para __init__.py?] -is-init-py-for) – Aamir