说明
《Python 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
(编码题)设计一个名为 GirlFriend 的类,它只允许只能实例化一次,即实现单例模式。要求:
Python 代码如下
def singleton(cls):
instances = {}
def get_instance(*args, **kwargs):
if cls not in instances:
instances[cls] = cls(*args, **kwargs)
return instances[cls]
return get_instance
@singleton
class GirlFriend:
def __init__(self, name, age):
self.name = name
self.age = age
def __repr__(self):
return f'<Girlfriend: {self.name}, Age: {self.age}>'
实例化示例:
# 示例用法
gf1 = GirlFriend('Alice', 25)
print(gf1) # 输出: <Girlfriend: Alice, Age: 25>
gf2 = GirlFriend('Lily', 26)
# 因为已经有一个对象了,所以返回了第一个对象的属性
print(gf2) # 输出: <Girlfriend: Alice, Age: 25>
print(gf1 is gf2) # 输出 True
在这个例子中,singleton 装饰器接受一个类作为参数,返回一个包装函数 get_instance。get_instance 函数检查该类是否已经有实例存在,如果没有则创建一个新实例,否则直接返回已有的实例。这样,通过将类装饰成单例类,就可以保证只有一个实例存在。
查看相关链接中的知识。
(完)
更新时间:Aug. 16, 2024, 10:55 p.m. 标签:python 习题 类 单例 装饰器