__Getattr__ arasındaki farkı anlamak ve __getattribute__
Fark başarısız olduğumu anlamaya çalışıyorum.
Yığın Taşması soruDifference between getattr vs getattributediyor
__getattribute__
gerçek niteliklerini bakmadan önce çağrılır nesne, ve bu yüzden zor olabilir doğru şekilde uygulamak. Sonun olabilir sonsuz recursions çok kolay.
Bunun ne anlama geldiğini hiçbir fikrim yok.
Sonra yazıyor ki:
Neredeyse kesinlikle
__getattr__
istiyorum.
Neden?
Eğer __getattribute__
başarısız olursa, __getattr__
denir okudum. Neden iki farklı yöntem aynı şeyi yapıyorsun orada? Eğer benim kod yeni stil sınıfları uygular, ben ne yapmalıyım?
Bazı kod örnekleri bu soruya net için arıyorum. Benim yeteneğini en iyi için Google'dan araştırdım ama bulduğum cevaplar sorunu iyice tartışmak yok.
Eğer herhangi bir belge varsa, bunu okumaya hazırım.
CEVAP
Bazı temel ilk:
Nesneler, özellikleri ile uğraşmak zorunda. Normalde instance.attribute
yapıyoruz
Bazen daha fazla kontrol önceden öznitelik adını bilmiyoruz zaman ihtiyacımız var
instance.attribute
getattr(instance, attribute_name)
olacak
Bu modeli kullanarak, sağlayarak özniteliği alabilirizattrıbute_name. Bu bir dize olarak bir isim verdiğimizde çalışıyor ve örnek öznitelik adı tarafından başvurulan aramanız gerekir.
__getattr__
kullanın
Ayrıca açıkça yönetmek değil hangi nitelikleri ile başa çıkmak için nasıl bir sınıf söyleyebilirsin ve __getattr__
yöntemi ile.
Python zaten tanımlanmış olmayan bir nitelik talep ettiğinizde bu yöntemi çağırır. Ne tanımlayabilirsiniz.
Klasik bir usecase:
class A(dict):
def __getattr__(self, name):
return self[name]
a = A()
# Now a.somekey will give a['somekey']
__getattribute__
uyarılar ve kullanım
Eğer her öznitelik yakalamak için ihtiyacınız varsa regardless whether it exists or not
yerine __getattribute__
kullanın.
Fark
__getattr__
aslında var olmayan özellikler için çağrılır. Eğer doğrudan özniteliği ayarlarsanız, bu özniteliği başvuran __getattr__
çağrılmadan almak olacaktır.
__getattribute__
Her zaman denir.
gerçekten usul arasındaki farkı anlama...
Arasındaki farkı anlamak Nesne.() oluş...
Java iki tarih arasındaki gün farkı?...
'çeşitli yöntemler arasındaki far...
Nasıl JavaScript ile iki Tarih arasınd...