Enjekte etmek

Hızlı Python Bağımlılık Enjeksiyonu
Şimdi İndirin

Enjekte etmek Sıralama ve Özet

Reklamcılık

  • Rating:
  • Lisans:
  • MIT/X Consortium Lic...
  • Fiyat:
  • FREE
  • Yayıncı adı:
  • Ivan Korobkov
  • yayıncı web sitesi:
  • http://code.google.com/u/Ivan.Korobkov/

Enjekte etmek Etiketler


Enjekte etmek Açıklama

Hızlı Python Bağımlılık Enjeksiyonu Enjekte hızlı bir python bağımlılık enjeksiyon kütüphanesidir. Nesneleri yeniden kullanmayı belirlemek için dış bağımlılıklara ve kapsamlara (Guice-Inspired) referans olarak dekoratörleri ve tanımlayıcıları kullanır. Bağımlılıklar türler ve isteğe bağlı açıklamalar ile referans verilebilir. Hiçbir konfigürasyon gerekmez, ancak gelişmiş kodlu konfigürasyon mümkündür. Pycontainer veya Spring Python gibi diğer piton bağımlılığı enjeksiyon araçları, diğer dillerden (Java) aittir. Böylece, Martin Fowler.python tarafından açıklanan statik olarak yazılan dillere özgü bağımlılık enjeksiyon yollarına dayanırlar. Bir dilde uygun ve kullanılabilir görünen desenler ve programlama teknikleri, diğerinde garip olabilir. Belirli Python işlevselliğini kullanarak _pythonic_ bağımlılık enjeksiyonunu sağlamak için enjeksiyon oluşturulmuştur. Enjektede kullanılan terminoloji kasıtlı olarak Guice'e benzer hale getirilmiştir, ancak iç mimarlık farklıdır. config = inject.attr ('config', config) a = inject.attr ('a', a) @ enject.param ('B', b): def __init __ (öz, b): self.b = bc = C () İşte "Enjekte" nin bazı önemli özellikleridir: · Hızlı, yalnızca 2-3 katı doğrudan başlamadan daha yavaş. · Nesnelerin normal yolu, sınıf (* args, ** kwargs). · Argümanları fonksiyonlara ve yöntemlere enjekte etmek. · Türlere ve isteğe bağlı ek açıklamalardan bağımlılıkları referanslandırın. · Aramalabilenler, örneklere ve bağlanmamış yöntemlere bağlanma (Invokers'a bakınız). · WSGI ve DJANGO uygulamaları için kapsam katman yazılımı (Python2.5 + gerektirir). · Hiç yapılandırma gerekmez. Gelişmiş esnek konfigürasyon mümkün: · Enjektör.bind (Sınıf, = Class2) · Enjektör.bind (Veritabanı, Annotation = 'user', = usersdatabase, Scope = Appscope) · Enjektör.bind ('app_started_at', = datetime.now ()) · Enjektör.bind ('some_var', = class.unbound_method) İki enjeksiyon yöntemi, bir tanımlayıcı ve bir dekoratör: sınıfım (nesne): · Attr = inject.attr ('attr', class2) @ Inject.Param ('Param', Class2): def myfunc (param): · geçmek Varsayılan KWARG değeri olarak Exect.Super'ı geçerek miras desteği: sınıfım (nesne): · @ Inject.Param ('Param1', Class1) def __it __ (öz, param1): · Self.param1 = param1 Sınıf My2 (benim): · @ Inject.Param ('Param2', Class2) def __init __ (öz, param2, param1 = enject.super): · Süper (my2, benlik) .__ init __ (param1 = param1) · Self.param2 = param2 Bağlantı yöntemlerini çağırmak için çağrıştırıcılar (dinleyiciler için serin): sınıfım (nesne): def get_data (öz): · geçmek · Bağlanmamış bir yöntem gerektiren bir Invoker oluşturun. · Invoker = Inject.invoker (my.get_data) · Veri = Invoker () · Doğrudan bağlanmamış bir yönteme bağlayın. · @ Inject.Param ('Data', My.Get_Data) DEF FUNC (VERİLER): · geçmek · Kısmi enjeksiyonlar, sadece bazı argümanlar enjekte edildiğinde. · @ Inject.Param ('Logger', Logger) def mylog (msg, logger): · geçmek · Mylog ('Mesajım') · Kapsamlar: Uygulama (Singleton), istek, noscope. Sınıf Kontrol Cihazı (Nesne): · Oturum = Inject.ATtr ('Oturum', Oturum, Kapsam = ReqScope) · Veya yapılandırmada · Enjektör.bind (oturum, = oturum, kapsam = reqscope) · Varsayılan kapsamları ayarlayın · @Reqscope Sınıf Oturumu (Nesne): · geçmek · @AppScope Sınıf VeritabanıPool (Nesne): · geçmek · Mevcut projelere kolay entegrasyon. Gereksinimler: · Python


Enjekte etmek İlgili Yazılım

astlib

Basit araziler, istatistikler, yaygın hesaplamalar, koordinat dönüşümleri ve manipüle etmek için bir piton modülü kümesi görüntülere uyar ...

151

İndirmek