Python'da temel amacı temel bir veri özniteliğinin değerini (yani iç destek deposu) almak olan bir genel yönteminiz olduğunu varsayalım. Yöntem, tembel değerlendirme mantığına, vs. sahip olabilir. Bir özellik, böyle bir yöntemin bir örneğidir. Daha sonra, veri niteliği için alt çizgi öneki hariç, yöntem ve veri özniteliği için aynı adı kullanmak doğaldır. (Python's "property" documentation itibaren) sonra, örneğinPython'da, bir iç özelliğin yedekleme deposu için tercih edilen bir adlandırma kuralı nedir?
class C(object):
def __init__(self):
self._x = None
@property
def x(self):
"""I'm the 'x' property."""
return self._x
Ama yöntem dahili kullanım için ise bazı tercih konvansiyonlar nelerdir ve bu yüzden kendisi bir alt çizgi öneki için mi? Destek mağazasının iki önde gelen alt çizgi ile ön eklenmesi, ad manganlamasını başlatır ve bu nedenle ideal değildir.
İki olasılık
def _get_x(self):
return self._x
def _x(self):
return self._x_
Python stili (alt çizgi ekleme) ikinci diyor göre-- olabilir, ama, sadece ayrılmış anahtar kelimelerle çatışmaları önlemek için kullanılmalıdır.
Ben yorumları, -1 puan olamaz sevindim. –
Özel bir mülk sahibi olmanın birçok insanı kafasını karıştıracağını düşünüyorum. Kendi sınıfınızı 'property' denilen, belki de 'cached_property'den türetmenizi ve' __get__' 'yi tanımlamak için getter çağrısında bulunmayı öneririm ve eğer varsa, döndürdüğü değeri döndürür. aradı. Ve önbelleğe alınan değeri unutmak için '__delete__' tanımlayın. – Omnifarious
Sadece kendim için bunlardan birini yazdım, yapılıp yapılamayacağını görmek için. Ve gerçekten de olabilir, ama bu biraz çirkin ve zayıf referanslar kullanılmasını gerektirir, yani mülkün konulduğu sınıfın zayıf referansa sahip olması gerektiği anlamına gelir. – Omnifarious