#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__是共有属性