SORU
23 EYLÜL 2008, Salı


__Ekleme kodu init__.py

Django model sistemin nasıl çalıştığına bir göz alıyorum ve anlamadığım bir şey fark ettim.

Geçerli dizin bir paket olduğunu belirtmek için __init__.py boş bir dosya oluşturmak olduğunu biliyorum. Ve __init__.py bazı değişken ayarlayabilirsiniz * işleri düzgün al.

Ama django tablolar ithalat ve __init__.py bir sürü ders tanımlar bir sürü ekler. Neden? Bu işler karışık göstermemiş mi? __init__.py bu kod gerektiren bir sebep var mı?

CEVAP
23 EYLÜL 2008, Salı


__init__.py tüm ithalat içeren paket (dizin) aldığınızda kullanılabilir.

Örnek:

./dir/__init__.py:

import something

./test.py:

import dir
# can now use dir.something

EDİT: söylemeyi unutmuşum, __init__.py kod dizininden herhangi bir modülü içe ilk kez çalışır. Normalde seviye paketi hazırlama herhangi bir kod koymak için iyi bir yerdir.

EDİT2: dgrant benim örnekte olası bir karışıklığa işaret etti. 14* import something *ithalat herhangi bir modülü, paket gerekli değil. Örneğin, import datetime, o zaman bizim üst düzey test.py ile hem bu parçacıkları çalışır: değiştirebiliriz

import dir
print dir.datetime.datetime.now()

ve

import dir.some_module_in_dir
print dir.datetime.datetime.now()

Sonuç: tüm atanan isimler __init__.py, ithal modüller, fonksiyonlar ya da sınıflar, otomatik olarak kullanılabilir paket ad her aldığınız paket veya modül paketi.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • bethliebert

    bethliebert

    23 EKİM 2008
  • magnum33563

    magnum33563

    8 NİSAN 2011
  • Crossover

    Crossover

    18 HAZİRAN 2007