class Person:
def __init__(self, id, name, address, tel):
self._id = id
self._name = name
self._address = address
self._tel = tel
# id (読み取り専用)
@property
def id(self):
"""id docstring"""
return self._id
# name (読み取り専用)
def __get_name(self):
"""name docstring"""
return self._name
name = property(__get_name)
# address (フルアクセス)
@property
def address(self):
"""address docstring"""
return self._address
@address.setter
def address(self, value):
self._address = value
@address.deleter
def address(self):
del self._address
# tel (フルアクセス)
def __get_tel(self):
return self._tel
def __set_tel(self, value):
self._tel = value
def __del_tel(self):
del self._tel
tel = property(__get_tel, __set_tel, __del_tel, "tel docstring")
staff = Person(123, "Yamada Taro", "Tokyo", "03-1234-5678")
print(staff.id, staff.name, staff.address, staff.tel)
# 出力:123 Yamada Taro Tokyo 03-1234-5678
print(Person.id.__doc__)
# 出力:id docstring
print(Person.name.__doc__)
# 出力:name docstring
print(Person.address.__doc__)
# 出力:address docstring
print(Person.tel.__doc__)
# 出力:tel docstring
# staff.id = 456
# 例外 AttributeError: can't set attribute
# staff.name = "Sato Jiro"
# 例外 AttributeError: can't set attribute
staff.address = "Osaka"
staff.tel = "06-1234-5678"
print(staff.id, staff.name, staff.address, staff.tel)
# 出力:123 Yamada Taro Osaka 06-1234-5678
Person.id.__doc__ = "ID"
print(Person.id.__doc__)
# 出力:ID
Person.name.__doc__ = "NAME"
print(Person.name.__doc__)
# 出力:NAME
Person.address.__doc__ = "ADDRESS"
print(Person.address.__doc__)
# 出力:ADDRESS
Person.tel.__doc__ = "TEL"
print(Person.tel.__doc__)
# 出力:TEL
# del staff.id
# 例外 AttributeError: can't delete attribute
# del staff.name
# 例外 AttributeError: can't delete attribute
del staff.address
del staff.tel
print(staff.id, staff.name)
# 出力:123 Yamada Taro
# print(staff.address)
# 例外 AttributeError: 'Person' object has no attribute '_address'
# print(staff.tel)
# 例外 AttributeError: 'Person' object has no attribute '_tel'