#!/usr/bin/env python # coding: utf-8 # # 公有、私有、特殊以及静态的方法和属性 # # 一些以 `_` 开头的都是对象的特殊方法和属性。通常来说: # # - 以字母开头都是公有的方法和属性,可以直接调用; # - 在Python中,“私有”的方法和属性以`_`开头,不过,并不存在真正私有的方法和属性,所谓“私有”只是不会被代码自动完成所记录,无法在按键时自动补全。 # - 以`__`开头并以`__`结尾的是一些系统内置的属性和方法。 # - 以`__`开头不以`__`结尾的是一些更加特殊的方法,调用方式最为复杂。 # - 装饰器@staticmethod可以生成一个静态方法,静态方法可以用类本身去调用,在定义时,静态方法不需要加self参数。 # # 例如: # In[1]: class MyClass(object): @staticmethod def static(): print("I'm a static method!") pub = "public" def __init__(self): self._spe = "special" print("I'm a special method!") def _private(self): print("I'm a private method!") def public(self): print("I'm a public method!") def __really_special(self): print("I'm a really special method!") # 构造对象时调用了一个特殊的方法`.__init__()`: # In[2]: m = MyClass() # 查看公有属性和特殊属性: # In[3]: m.pub # In[4]: m._spe # 公有方法: # In[5]: m.public() # 私有方法: # In[6]: m._private() # 以`__`开头不以`__`结尾的方法调用方式有所不同,需要加上类名: # In[7]: m._MyClass__really_special() # 静态方法用类去调用: # In[8]: MyClass.static() # In[ ]: