1. 程式人生 > >總結Python中面向物件的特殊方法

總結Python中面向物件的特殊方法

當你從萌新小白到有點程式設計概念的時候或許就會有疑問,為什麼print()就可以打印出東西,為什麼生成器就可以next()進行迭代,這些都是因為類本身實現了一些特殊方法,我們來總結一下:
1.如果把一個類的例項變成str,就需要實現特殊方法__str__( ):
str:用於顯示給使用者 repr:用於顯示給開發人員
2.slots__限制例項的屬性
slots__定義的屬性僅對當前例項起作用,對繼承的子類不起作用
3.Python內建的@property 裝飾器 負責把一個方法變成屬性呼叫
4.如果一個類表現的像一個list,要獲取有多少個元素,就得用len()函式
要讓len()函式正常執行,類必須實現一個特殊方法__len

( )
5.如果一個類想被用於for…in 迴圈,類似list 和tuple 那樣,就要用__iter
( ) 方法,它返回一個迭代物件,python的for迴圈就會不斷呼叫該迭代物件的__next__( )方法拿到迴圈的下一個值,直到遇到StopIteration 錯誤時退出迴圈
6.如果可以通過下標取元素,那麼類中必須實現__getitem__()方法:
7.在自定義類中,如果呼叫一個屬性不存在時,可以呼叫__getatter__( ) ,動態返回一個屬性
8.一個物件例項可以有自己的屬性和方法,在呼叫例項方法時,instance.method()呼叫也可以直接作用在例項本身上 (物件中呼叫例項方法,類比,類中呼叫例項)任何一個類,只需要定義__call__( ) 方法,就可以直接對例項進行呼叫