__file__,assert断言,new方法 单例模式

本文介绍了Python中的单例模式实现,通过`new`方法确保类只有一个实例,并展示了`assert`断言的使用。同时,给出了一个具体的单例模式应用例子,用于管理任务打印。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

# 输出当前文件的绝对路径

print(__file__)

断言assert

assert type(1) is int
assert 1+1 == 2
assert 1+1 == 2 # 会报AssertionError

def my_interface(name,age,score):
    assert type(name) is str
    assert type(age) is int
    assert type(score) is float
my_interface("alex",22,89.2)

class Person(object):
def init(self,name):
self.name = name
print("–init …")
def new(cls, *args, **kwargs):
# 负责执行__init__
“”"
cls : 代表Person这个类本身
:param args:
:param kwargs:
:return:
“”"
print("–in new: ",cls,*args,**kwargs)
return object.new(cls) # 执行__init__
p = Person(“Alex”)
print(p.name)
print(Person)

单例模式实例

class Printer(object):
__instance = None
__task = []
def init(self,task):
self.__task.append(task)
print(“工作。。”)
def new(cls, *args, **kwargs):
if cls.__instance == None: # 代表之前没有实例过
obj = object.new(cls)
cls.instance = obj
return cls.__instance # 下次实例化就返回第一次的实例化的对象
def job(self):
return self.__task

job = Printer(“job1 word”)
job2 = Printer(“job2 png”)
job3 = Printer(“job3 excel”)
print(id(job),id(job2),id(job3)) # 会发现这3个实例的内存id一样
print(job3.jobs())

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值