知识点:
1.创建对象的过程:
1.调用 类的 __new__(cls)方法
2.自动调用 __init__(self)方法
3.返回对象的引用
2.使对象只创建一次: 用类属性保存第一次创建对象的地址,当再次创建对象时,进行判断过滤掉
3..使对象只初始化一次:用类属性设立flag 只允许初始化一次。
4.print(id(A)) A为类或者对象 打印结果为类或者对象的地址。
class A(object):
__instance = None
__init_flag = False
def __new__(cls,name):
if cls.__instance == None:
cls.__instance = object.__new__(cls)
return cls.__instance
else:
return cls.__instance
def __init__(self,name):
if self.__init_flag == False:
self.name = name
self.__init_flag = True
else:
pass
def __str__(self):
return "id:%s,name:%s"%(id(self),self.name)
a1 = A("a")
print(a1)
a2 = A("b")
print(a2)
结果如下: