Bazen, bir nesne için getter niteliklerini, ilk defa çağrılacakları, ağır kaldırma işleminin bir kez yapıldığı ve bu değerin gelecekteki aramalarda kaydedilip geri gönderildiği gibi yazmak isterim. Amaç-c'de bu değeri tutmak için bir ivar veya statik bir değişken kullanacağım. gibi bir şey:Tembel alıcıları uygulamak için Python'da uygun desen nedir?
- (id)foo
{
if (_foo == nil)
{
_foo = // hard work to figure out foo
}
return _foo
}
bu aynı desen Python iyi tutmak mı, yoksa bunu yapmanın daha kabul yolu var mı? Temelde şu ana kadar aynı şey var. Ne benim çözümü hakkında sevmiyorum benim nesne bu değerler için değerleri ve alıcılar ile darmadağın olur olmasıdır:
def foo(self):
if not hasattr(self, "mFoo":
self.mFoo = # heavy lifting to compute foo
return self.mFoo
Teşekkürler, @property bu sınıfa devam etmez, öyle değil mi? –
@darren gerçekten de, bu gece yarısı yanlış tarafta yayınlamak için aldığım değil. :) Şimdi tamir ettim. – lvc