简介¶

属性 attributes¶

属性是与对象绑定的一组数据,可以只读,只写,或者读写,使用时不加括号,例如:

In [1]:

  1. f = file("new_file", 'w')

显示模式属性:

In [2]:

  1. f.mode

Out[2]:

  1. 'w'

是否关闭:

In [3]:

  1. f.closed

Out[3]:

  1. False

mode 是只读属性,所以这样会报错:

In [4]:

  1. f.mode = 'r'
  1. ---------------------------------------------------------------------------
  2. TypeError Traceback (most recent call last)
  3. <ipython-input-4-d9757d46f855> in <module>()
  4. ----> 1 f.mode = 'r'
  5.  
  6. TypeError: readonly attribute

获取属性不需要加括号:

In [5]:

  1. f.mode()
  1. ---------------------------------------------------------------------------
  2. TypeError Traceback (most recent call last)
  3. <ipython-input-5-6b67c2ae8f67> in <module>()
  4. ----> 1 f.mode()
  5.  
  6. TypeError: 'str' object is not callable

方法 method¶

方法是与属性绑定的一组函数,需要使用括号,作用于对象本身:

In [6]:

  1. f.write('Hi.\n')
  2. f.seek(0)
  3. f.write('Hola!\n')
  4. f.close()

In [7]:

  1. !rm new_file

使用 OPP 的原因¶

  • 构建自己的类型来模拟真实世界的对象
  • 处理抽象对象
  • 容易复用和扩展
  • 理解其他 OPP 代码
  • GUI 通常使用 OPP 规则编写

原文: https://nbviewer.jupyter.org/github/lijin-THU/notes-python/blob/master/08-object-oriented-programming/08.01-oop-introduction.ipynb