第二发

#OO继承了object
class
OO(object): #重构了new函数,单例模式,*args,**kwargs先不用理解 def __new__(self,*args,**kwargs): if not "_instance" in vars(cls): cls._instance = super(Singlegton1,*args,**kwargs) return cls._instance def __init__(self,*args,**kwargs): pass #把类可以当函数用。例如OO() def __call__(self,*args,**kwargs): pass #先调用new,然后调用init o = OO() #调用call函数 o("a","b")

①:python是动态语言可以随意添加绑定数据,例:o.cc = "12"
但是动态绑定的数据只在当前实例中有,例:
a = OO()
b=OO()
a.name = "gaga"
print b.name#报错

②:self相当于this,指向的是实例自身,比如o("a","b")就把自身传到函数call中

③:如果属性不被外部访问,可以在属性名前加上__,就变成了一个私有属性(python解释器把变量变成了_类名__name,但是不同版本的解释器可能会吧__name解释成不同的名字,没有通过技术手段屏蔽,约定俗成吧)。但是如果属性名后面再加上__,就变成了公共属性。例:__name是私有属性,__name__是共有属性
原文地址:https://www.cnblogs.com/say-one-say/p/4933767.html