物件導向程式設計 - 進階篇
雖然大家都說 Python 是一款很容易學習的程式語言,它的語法的確寫起來很簡單,不過在這些簡單的語法背後,Python 做了不少有趣的事,而這些細節我相信在平常的工作大概都是用不上的,知道這些細節的好處是以後在看待 Python 的時候會有完全不同的觀點。
這個章節的內容比較難一點,所以要先跳過這章節也可以,或是等過陣子對 Python 更熟悉之後再回來看也行。既然是進階篇,那我們就先從最基本但可能有點複雜的描述器開始吧!
描述器
在 Python 的物件導向的世界裡,當我們試著執行 kitty.sleep()
方法或是印出 kitty.age
屬性的值的時候,背後的運作機制可能比你想像中的複雜一些。
Python 有個叫做「描述器(Descriptor)」的設計,這是一個我認為很有趣的功能,如果只是寫一些簡單的程式或只是拿 Python 來做網站的話,大概用不上它。嗯...也不是用不上,如果我們用網站開發框架像是 Django 做網站的時候,用到描述器的頻率還滿高的,只是你可能不知道它就是描述器而已。描述器可以讓我們在讀取或設定物件身上的屬性或執行方法的時候在背後偷偷做一些事情,同時它也是很多我們現在看起來很理所當然的功能的基礎。
使用情境
看一下這段程式碼:
class Cat:
def __init__(self, name, age):
self.name = name
self.age = age
kitty = Cat("凱蒂", 18)