____ ____ Hazırlanın anlayış ve Python tanımlayıcıları
BençalışıyorPython'un tanımlayıcıları ne olduğunu ve ne onlar için yararlı anlamak için. Ancak bunda başarısız oldum. Nasıl çalıştığını anlıyorum, ama burada benim şüphelerim. Aşağıdaki kodu göz önünde bulundurun:
class Celsius(object):
def __init__(self, value=0.0):
self.value = float(value)
def __get__(self, instance, owner):
return self.value
def __set__(self, instance, value):
self.value = float(value)
class Temperature(object):
celsius = Celsius()
Neden açıklayıcı sınıf ihtiyacım var mı? Bu örnek ile açıklamak ya da daha iyi olduğunu düşünüyorum birini lütfen.
instanceownernedir? (__get__). Yani benim soru, üçüncü parametre burada amacı nedir?Nasıl bu örneği kullanmak diyebilir miyim?
Böyle bir çaylak olduğum için üzgünüm, ama gerçekten bu çalışma almak için nasıl anlayamıyorum.
CEVAP
Tanımlayıcısı nasıl python property tip uygulanır. Bir tanımlayıcı basitçe söylemek gerekirse __get__, __set__, vb uygular. ve sonra onun tanımı üzerinde Sıcaklık sınıfı ile yaptığınız gibi) başka bir sınıf eklenir. Örneğin
temp=Temperature()
temp.celsius #calls Celsius.__get__
Bu özellik tanımlayıcısı (yukarıdaki örnekte celsius) atanan erişim arama uygun bir tanımlama yöntemi.
instance __get__ örnek sınıf (yani yukarıda, __get__ alması temp, owner sınıf tanımlayıcısı (bu kadar olur Temperature).
Mantık bu güçler saklanması için tanımlayıcı bir sınıf kullanmanız gerekir. Eğer tanımlayıcısı pahalı bir işlem (örneğin) önbellek için kullanılır, böylece, kendi değerini ve kendi sınıfında değil mağaza.
Tanımlayıcıları hakkında bir makale http://martyalchin.com/2007/nov/23/python-descriptors-part-1-of-2/ bulunabilir
EDİT: jchl açıklamalarda belirttiği Gibi, eğer sadece çalışırsanız Temperature.celsius, instance None olacak.

____ Mutlak ya da göreli dosya öznitel...
node.js eşdeğer python's __adı== ...
' ____ al s deÄŸil'beklendiÄŸi...
Python Kullanarak ____ getattribute me...
Python ____ ve self ınit ne yapıyorlar...