SORU
29 NİSAN 2011, Cuma


neden __init__.py dosyaları python kodu koyacağım

__init__.py dosyaları koymak istiyorum ve en iyi uygulamaları bununla ilgili ne arıyorum. Ya da, genel olarak kötü bir uygulamadır ?

Bu açıklar bilinen belgeler, herhangi bir başvuru için de çok teşekkür ederim.

CEVAP
29 NİSAN 2011, Cuma


Kütüphaneler ve çerçeveler genellikle __init__.py dosyaları başlatma kodu düzgünce iç yapısını gizlemek ve kullanıcı için standart bir arayüz sağlamak için kullanabilirsiniz.

Bu Django formları modülü örnek alalım. Formlar modülünde çeşitli fonksiyonları ve sınıfları farklı dosyaları sınıflandırılması dayalı olarak tanımlanır.

forms/
  __init__.py
  extras/
    ...
  fields.py
  forms.py
  widgets.py
  ...

Şimdi olsaydın oluşturmak için bir form, biliyorsun hangi dosya her fonksiyonu tanımlanmış ve kodu oluşturmak için bir iletişim formu olacak bakmak gibi bir şey bu (ki uygunsuz ve çirkin).

 class CommentForm(forms.forms.Form):
    name = forms.fields.CharField() 
    url = forms.fields.URLField()
    comment = forms.fields.CharField(widget=forms.widgets.Textarea) 

Bunun yerine, Django sadece widget, formlar, alanlar vb çeşitli başvurabilirsiniz. form ad doğrudan.

from django import forms

class CommentForm(forms.Form):
    name = forms.CharField()
    url = forms.URLField()
    comment = forms.CharField(widget=forms.Textarea)

Bu nasıl mümkün olabilir? Bunu mümkün kılmak için, Django widget, formlar, alanlar vb tüm ithal eden forms/__init__.py dosyasına aşağıdaki ifadeyi ekler. forms ad.

from widgets import *
from fields import *
from forms import *
from models import *

Gördüğünüz gibi, bu kolaylaştırır hayatını oluştururken formları çünkü artık gerek yok endişe içinde her fonksiyon/sınıf tanımlanmış ve tüm bu doğrudan forms ad. Bu sadece bir örnek ama diğer çerçeveler ve kütüphaneler bu gibi örnekler görebilirsiniz.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • 8lacKy

    8lacKy

    30 Mart 2009
  • jbignacio

    jbignacio

    13 Mart 2006
  • MatheusDosGames

    MatheusDosGa

    28 Aralık 2011