データアクセスの管理:プライベート属性

Python によるオブジェクト指向プログラミング

Alex Yarosh

Content Quality Analyst @ DataCamp

クラスのデータはすべて公開

ここは大人の世界

Python によるオブジェクト指向プログラミング

アクセス制限

  • 命名規則
  • @propertyでアクセスを調整
  • __getattr__()__setattr__() のオーバーライド
Python によるオブジェクト指向プログラミング

命名規則:内部属性

obj._att_name, obj._method_name()

  • 先頭が単一の_ → 「内部用」
  • 公開APIの一部ではない
  • クラス利用者: 触れないこと
  • クラス開発者: 実装詳細・ヘルパー向け

df._is_mixed_type , datetime._ymd2ord()

Python によるオブジェクト指向プログラミング

命名規則:擬似プライベート属性

obj.__attr_name , obj.__method_name()

  • __で始まり、__で終わらない → 「擬似プライベート」
  • 継承されない
  • 名前マングリング: obj.__attr_nameobj._MyClass__attr_name と解釈
  • 継承時の名前衝突を防ぐために使用

 

先頭かつ末尾が__の名前は、Python組み込みメソッド(__init__(),__repr__())にのみ使用!

Python によるオブジェクト指向プログラミング

演習に進みましょう

Python によるオブジェクト指向プログラミング

Preparing Video For Download...