管理資料存取:私有屬性

Python 物件導向程式設計

Alex Yarosh

Content Quality Analyst @ DataCamp

所有類別資料皆為公開

大家都是大人

Python 物件導向程式設計

限制存取

  • 命名慣例
  • 使用 @property 自訂存取
  • 覆寫 __getattr__()__setattr__()
Python 物件導向程式設計

命名慣例:內部屬性

obj._att_name, obj._method_name()

  • 以單一 _ 開頭 → 「內部」
  • 不屬於公開 API
  • 作為類別使用者:不要碰
  • 作為類別開發者:用於實作細節、協助函式…

df._is_mixed_typedatetime._ymd2ord()

Python 物件導向程式設計

命名慣例:偽私有屬性

obj.__attr_name , obj.__method_name()

  • __ 開頭且不以其結尾 → 「私有」
  • 不會被繼承
  • 名稱改寫:obj.__attr_name 會被解讀為 obj._MyClass__attr_name
  • 用於避免繼承類別中的名稱衝突

 

同時有前後 __ 僅用於 Python 內建方法(__init__()__repr__())!

Python 物件導向程式設計

一起來練習吧!

Python 物件導向程式設計

Preparing Video For Download...