SORU
21 NİSAN 2009, Salı


Python giriş noktaları açıklar mısınız?

Tepe sayfalarındaki Dikmesi ve yumurta giriş noktalarına belgeleri okudum, ve ben hala gerçekten anlamıyorum. Biri bana bunları açıkla, ya da makale ya da bir kitap beni işaret edebilir?

CEVAP
8 Mart 2012, PERŞEMBE


EntryPoints, dosya tabanlı bir kalıcı nesne adı bir kayıt sağlamak ve ilgili doğrudan nesne alma mekanizması (setuptools paket tarafından uygulanan).

-Serbest biçim tanımlayıcıları ile Python nesnelerin adları ilişkilendirir. Başka bir kod aynı Python kurulumu kullanarak ve tanımlayıcı bilerek ilişkili ada sahip bir nesne, nesnenin tanımlandığı olursa olsun erişebilir.ilişkili isimler isim Python bir modülü mevcut olabilir; örneğin, bir sınıf adı, işlev veya değişken. Giriş noktası mekanizması adı ne ifade eder umursamıyor, alınabilir olduğu sürece.

Örnek olarak, diyelim kullanın (adı) fonksiyonu ve tam adı ile hayali bir python modülü 'myns.mypkg.': . mymodule

def the_function():
   "function whose name is 'the_function', in 'mymodule' module"
   print "hello from the_function"

Giriş noktaları setup.py beyanname puan girişi ile kayıt. Giriş noktası altında the_function kayıt için aradı '': . my_ep_func

    entry_points = {
        'my_ep_group_id': [
            'my_ep_func = myns.mypkg.mymodule:the_function'
        ]
    },

Örnekte gösterildiği gibi, giriş noktaları gruplandırılır; API ilgili tüm giriş noktaları bir grup (örnek aşağıda) ait bakmak için var.

Üzerine bir paket yükleme (örn. çalışan 'python setup.py '), yukarıda beyan setuptools tarafından ayrıştırılır yükleyin. O zaman özel dosya ayrıştırılır bilgileri yazar. Bundan sonra, pkg_resources API (setuptools parçası) giriş noktası aramak ve nesne(ler) ilişkili ad(lar) erişmek için kullanılabilir:

import pkg_resources

named_objects = {}
for ep in pkg_resources.iter_entry_points(group='my_ep_group_id'):
   named_objects.update({ep.name: ep.load()})

Burada, setuptools özel dosyalar yazılmış giriş noktası bilgileri okuyun. Giriş noktası bulmuş, ithal modülü (myns.mypkg.mymodule) ve alınan the_function, pkg_resources çağrısı üzerine tanımlanmış.() yükleyin.

Aynı grup kimliği için diğer giriş noktası trafiğe çıktı hayır varsayarsak, the_function çağıran o zaman basit olurdu:

>>> named_objects['my_ep_func']()
hello from the_function

Belki ilk başlarda biraz kavramak zor olsa da, giriş noktası mekanizma aslında oldukça basit kullanmaktır. Takılabilir Python yazılım geliştirme için kullanışlı bir araçtır.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • calicoJake

    calicoJake

    29 EKİM 2007
  • Max Lee

    Max Lee

    18 AĞUSTOS 2006
  • Yanko Kral

    Yanko Kral

    8 HAZİRAN 2006