管理数据访问:私有属性

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_name 会被解释为 obj._MyClass__attr_name
  • 用于避免在子类中发生命名冲突

 

前后同时带 __ 仅用于 Python 内置方法(__init__()__repr__())!

Python 面向对象编程

¡Vamos a practicar!

Python 面向对象编程

Preparing Video For Download...