SORU
10 HAZİRAN 2011, Cuma


Python özelliği özelliğini kullanma ile ilgili gerçek hayattan örnek?

Nasıl kullanılacağını merak ediyorum@özellikleriPython. Python belgeleri okudum ve örnek orada, benim görüşüme göre, sadece bir oyuncak kod:

class C(object):
    def __init__(self):
        self._x = None

    @property
    def x(self):
        """I'm the 'x' property."""
        return self._x

    @x.setter
    def x(self, value):
        self._x = value

    @x.deleter
    def x(self):
        del self._x

Bu sarma ne alabilirim bilmiyorum_xözellik dekoratör ile dolu. Neden sadece uygulamak değil:

class C(object):
    def __init__(self):
        self.x = None

Özellik özellik bazı durumlarda yararlı olabileceğini düşünüyorum. Ama ne zaman? Biri bana gerçek dünyadan bazı örnekler verebilir misiniz?

Teşekkürler.

CEVAP
10 HAZİRAN 2011, Cuma


Diğer örnekler doğrulama/karmaşık ve hızla değişen şartlar kümesi öznitelikleri (onları sınırları içinde olmak ya da kabul edilebilir zorlama) ve tembel değerlendirme filtreleme olurdu.

Karmaşık hesaplama bir nitelik arkasında gizli:

class PDB_Calculator(object):
    ...
    @property
    def protein_folding_angle(self):
        # number crunching, remote server calls, etc
        # all results in an angle set in 'some_angle'
        # It could also reference a cache, remote or otherwise,
        # that holds the latest value for this angle
        return some_angle

>>> f = PDB_Calculator()
>>> angle = f.protein_folding_angle
>>> angle
44.33276

Doğrulama:

class Pedometer(object)
    ...
    @property
    def stride_length(self):
        return self._stride_length

    @stride_length.setter
    def stride_length(self, value):
        if value > 10:
            raise ValueError("This pedometer is based on the human stride - a stride length above 10m is not supported")
        else:
            self._stride_length = value

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • MrRandomSong

    MrRandomSong

    29 Kasım 2009
  • o0oCyrusViruso0o

    o0oCyrusViru

    11 Mart 2008
  • ParryGripp

    ParryGripp

    12 AĞUSTOS 2006