Bir sistemi temsil eden bir durum nesnesine sahibim. Durum nesnesi içindeki özellikler [büyük] metin dosyalarından doldurulur. her özellik bir devlet örneği oluşturulur her zaman erişilir gibi, duyu lazily bunları yüklemek için yapar .: tekrarlayan Demirbaş kodu bir sürü var buradaAşırı yüklenmiş dekoratörler kullanan tembel yükleme değişkenleri
class State:
def import_positions(self):
self._positions = {}
# Code which populates self._positions
@property
def positions(self):
try:
return self._positions
except AttributeError:
self.import_positions()
return self._positions
def import_forces(self):
self._forces = {}
# Code which populates self._forces
@property
def forces(self):
try:
return self._forces
except AttributeError:
self.import_forces()
return self._forces
. Üstelik, bir import_abc bazen bir kaç değişkene nüfuz edebilir (yani, zaten açıksa küçük bir veri dosyasından birkaç değişken içe aktarın). Ben tam olarak ne yöntemini izlemek için bir yol bulmak gibi olamaz, ancak
class State:
def import_positions(self):
self._positions = {}
# Code which populates self._positions
@lazyproperty(import_positions)
def positions(self):
pass
def import_forces(self):
self._forces = {}
# Code which populates self._forces and self._strain
@lazyproperty(import_forces)
def forces(self):
pass
@lazyproperty(import_forces)
def strain(self):
pass
:
O anlamda o değişken, viz "sağlamak" üzere bir fonksiyon kabul öyle ki @property aşırı kolaylaştırır Özellik dekoratöründe çağrılıyor. Bu nedenle, @property'ın kendi @lazyproperty'mize nasıl yükleneceğini bilmiyorum.
Herhangi bir düşünce?
Birden fazla State of State örneği oluşturursanız, bu çalışmayacaktır. yöntemin işlev nesnesi, ancak yöntem yalnızca sınıf düzeyinde bir kez bulunur, bu nedenle ne yaparsanız yapın tüm örnekleri etkileyecektir. Eğer ikinci bir 'Devlet' yaparsanız ve pozisyonlarını değiştirirseniz, değişikliklerin her iki durumda da göründüğünü görürsünüz. – BrenBarn
Haklısınız, düzeltildiniz. – lunixbochs