python-面向對象速查表-內置方法-內置函數-內置屬性(只整理了部分內容)

  • 2019 年 10 月 7 日
  • 筆記

今日臨時總結的內容,可能還有些不正確的地方,初步當做個速查表吧。

類的內置函數(繼承object的,自己重寫)

內置函數

執行時機

注意點

調用案例

__init__

實例化對象時

不允許寫返回值(return None和不返回沒區別)子類重寫了__init__()方法要在子類中的__init__()方法調用父類的__init__方法(super(當前類, self).__init__(參數))

stu = Student()

__new__

類實例化被調用時

stu = Studetn()

__call__

調用對象時

要記得調用父類的

stu(__call__方法的參數)

__str__

對象轉為字元串時

必須return 字元串類型的返回值(默認返回值時類型+地址,沒啥意義)

print(stu)

__del__

對象刪除時(手動或程式結束、垃圾回收機制)

del stu

__getattr__ ( . 方法原理)

用 .訪問屬性時

該屬性不存在才執行,有__getattribute__方法會先執行__getattribute__方法

stu.gaewfg

__setattr__ ( . 方法原理)

用 .新增/修改屬性時執行

stu.sex = 'male'

__delattr__ ( . 方法原理)

用del 對象.屬性 刪除屬性時,執行

屬性 被刪除時才執行

del stu.age

__getattribute__

用 .訪問屬性時

不管該屬性有沒有都會執行,寫了這個方法後__getattr__需要自行調用

stu.age

__getitem__ ( [] 原理)

用 [屬性名] 訪問屬性時

stu[age]

__setitem__ ( [] 原理)

用 [屬性名] = 修改或新增屬性時

stu[age] = 18

__delitem__ ( [] 原理)

用 [屬性名] 刪除屬性時

del stu[age]

__gt__ __ge__ __eq__ __ne__ __lt__ __le__ 比較運算符(自定義比較規則)

調用對應的比較符時

像__gt__ 和 __lt__ 這樣的只需要指定一個即可

stu1 > stu2

__iter__ _next__ 迭代器協議

當成迭代取值對象時

for i in stu: …

__enter__ __exit__ 上下文管理

跟在 with 後面時

with MyOpen(__enter__ 的參數) as m:

類的內置屬性(直接就可以調用的)

屬性

作用

注意點

案例

__dict__

返回調用者自身的名稱空間

stu.__dict__

__class__

返回當前調用對象的類

__slots__

指定該類對象能所能擁有的全部屬性,減少記憶體開銷

會將類對象的屬性給限制死,視情況使用,連__dict__都會被省掉

__slots__ = ['name'] # 加了以後再添加屬性就不行了,限制屬性

類.mro()

獲取到類的mro 列表,即類的查找順序

python3中才有這個方法

類.__name__

返回類的類名

class_name = stu.__class__

面向對象相關內置方法(python解釋器內置方法)

函數

作用

注意點

案例

hasattr()

判斷某個對象是否存在某個屬性

返回值是True / False

hasattr(p, 'age')

getattr()

從對象中取出值

第三個位置默認值,不存在時返回默認值

getattr(p, 'age', None)

setattr()

為對象添加、修改屬性

setattr(p, 'name', 'jackson')

delattr()

刪除對象屬性

delattr(p, 'school')

locals()

獲取當前名稱空間內的所有名字

直接修改無效

類的初始化函數初始化屬性(__init__)

isinstance()

判斷一個對象是不是某個類/某幾個類的實例

第二參數可以傳元組,返回值為 True/ False

isinstance(obj1, (int, Student)) obj1是int 類型或者 Student 類型?

issubclass()

判斷一個類是不是另一個類的子類

issubclass(type(obj), Animal) 對象obj 的類 是不是Animal的子類

越來越感覺時間不夠用了,要加油呀! 一寸光陰一寸金,寸金難買寸光陰。