
288
第 7 章 データ型とプロトコル
7.8.11
属性アクセス
表
7-15
属性アクセス
式 メソッド
obj.attr __getattr__(self, attr)
obj.attr __getattribute__(self, attr)
obj.attr = value __setattr__(self, attr, value)
del obj.attr __delattr__(self, attr)
dir(obj) __dir__(self)
オブジェクトの属性値を参照・更新・削除する際に呼び出されます。
class Spam:
def __getattr__(self, name):
"""Spam.ham
は
'Ham!'
を返す
"""
if name == 'ham':
return 'Ham!'
else:
raise AttributeError(
"'Spam' object has no attribute '{}'".format(name))
def __setattr__(self, name, value):
"""Spam.ham = xxx
は、
Spam._ham
に値を設定する
"""
if name == 'ham':
super().__setattr__('_ham', value)
else:
raise AttributeError(
"'Spam' object has no attribute '{}'".format(name))
__