読者です 読者をやめる 読者になる 読者になる

by shigemk2

当面は技術的なことしか書かない

setterとdeleter

Python

2. 組み込み関数 — Python 2.7ja1 documentation

プロパティオブジェクトは getter, setter, および deleter メソッドを備えています。これらのメソッドは属性のコピーを生成するデコレータに適していて、デコレートした関数を対応する属性参照関数に割り当てます。

# -*- coding: utf-8 -*-
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

C = C()
print C # <__main__.C object at 0x102706610>

# propertyがないと AttributeError: 'C' object has no attribute 'x'
print C.x # None
# setterがないと AttributeError: can't set attribute
C.x = 3
print C.x # 3
del C.x
# deleterがないと  AttributeError: can't delete attribute
print C.x # AttributeError: 'C' object has no attribute '_x'