封裝 encapsulation
封裝 encapsulation:在物件導向中,封裝就是不讓外部使用者直接取用物件中的內容,只能用方法來修改。
class Car(object):
def __init__(self, wheel):
self._wheel = wheel
def get_wheel(self):
return self._wheel
def set_wheel(self, wheel):
self._wheel = wheel
Property
加上 property 裝飾器,就可以將私有屬性讓使用者用起來像公開屬性一樣。
使用property 裝飾器,方法名稱必須是同名。
class Car(object):
def __init__(self, wheel):
self.wheel = wheel # property
@property
def wheel(self):
print('get wheel')
return self._wheel
@wheel.setter
def wheel(self, wheel):
print('set wheel')
self._wheel = wheel
toyuta = Car(17)
print(toyuta.wheel)
# get wheel
# 17
toyuta.wheel = 21
# set wheel
設計流程:
- 直接設計屬性為public,除非真的只有class內部要用到,則可以寫為有底線的屬性(當作private)。
- 如需要getter, setter概念的method使用@property去達成。