共有,私有和特殊方法和属性

  • 我们之前已经见过 special 方法和属性,即以 __ 开头和结尾的方法和属性
  • 私有方法和属性,以 _ 开头,不过不是真正私有,而是可以调用的,但是不会被代码自动完成所记录(即 Tab 键之后不会显示)
  • 其他都是共有的方法和属性
  • 开头不以 结尾的属性是更加特殊的方法,调用方式也不同:

In [1]:

  1. class MyClass(object):
  2. def __init__(self):
  3. print "I'm special!"
  4. def _private(self):
  5. print "I'm private!"
  6. def public(self):
  7. print "I'm public!"
  8. def __really_special(self):
  9. print "I'm really special!"

In [2]:

  1. m = MyClass()
  1. I'm special!

In [3]:

  1. m.public()
  1. I'm public!

In [4]:

  1. m._private()
  1. I'm private!

注意调用方式:

In [5]:

  1. m._MyClass__really_special()
  1. I'm really special!

原文: https://nbviewer.jupyter.org/github/lijin-THU/notes-python/blob/master/08-object-oriented-programming/08.12-public-private-special-in-python.ipynb