概述
1.同一时刻 只能有一个人链接数据库 使用数据库的资源
一个类只能实例化一个对象
只是分配一个空间
__new__用来给对象申请空间
class Person(object):
# 类的私有属性,用来放申请的空间
__area = None
# 只用到类的属性,定义一个类方法
@classmethod
def __new__(cls, *args, **kwargs):
# 判断空间是否为None
if cls.__area is None:
# object.__new__(cls) 申请一个空间,放到容器中
cls.__area = object.__new__(cls)
# 返回存放这个空间的容器
return cls.__area
def __init__(self,a,b):
self.a = a
self.b = b
# 后一个对象会将前一个对象覆盖,返回的是后一个对象属性
p1 =Person('张飞',18)
p2 =Person('赵云',28)
p3 =Person('刘备',48)
print(p1.a,p1.b)
print(id(p1)) # 0X27559088
print(id(p2)) # 0X27559088
print(id(p3)) # 0X27559088
# 上面的内存地址一样 说明 只申请了 一个空间
# 这个空间只能有一个对象
2.创建一个类属性 记录 这个类创建了多少个对象;
实例化一个对象 自动调用__new__开辟一个空间;
记录开辟了几次空间 然后得出创建了多少个对象
class person():
__count = 0
def __new__(cls, *args, **kwargs):
cls.__count += 1
# 返回这个类初始的空间,否则这个空间一直被占用,不能实例化对象
return object.__new__(cls)
def __init__(self,name,age):
self.name = name
self.age = age
# 只用到类的属性,定义一个类方法
@classmethod
def get_count(cls):
return cls.__count
p1=person('李白',34)
p2=person('韩信',18)
# 查看对象的地址
print(id(p1)) #0x12551728
print(id(p2)) #0x12551760
print(person.get_count()) # 2
最后
以上就是英勇毛衣为你收集整理的面向对象——单例设计模式(例子)的全部内容,希望文章能够帮你解决面向对象——单例设计模式(例子)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复