python学习-Day30
2022/4/13 9:14:34
本文主要是介绍python学习-Day30,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录- 今日内容详细
- 作业讲解
- 设计模式
- 单例模式
- 实现思想
- 编写
- 单例模式
- pickle模块
今日内容详细
作业讲解
编写元类规定对象的所有数据值转大写 eg: obj.name = 'jason' print(obj.name) # JASON class MyTypeClass(type): def __call__(self, *args, **kwargs): args = [i.upper() for i in args] return super().__call__(*args, **kwargs) class MyClass(metaclass=MyTypeClass): def __init__(self, name, gender): self.name = name self.gender = gender def __setattr__(self, key, value): self.__dict__[key] = value.upper() obj = MyClass('jason', 'male') print(obj.name) print(obj.gender) obj.hobby = 'jdb' print(obj.hobby)
设计模式
在IT行业中设计模式总共有23种 可以分为三大类
1.创建型
2.结构型
3.行为型
单例模式
单例模式(Singleton Pattern) 是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在。
当你希望在整个系统中,某个类只能出现一个实例时,就能派单例对象上场。 单例模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建
实现思想
单例模式的意思是一个类只能产生一个对象,用于节省资源
第一次创建类的对象的时候判断系统是否已经有这个单例,如果有则返回,如果没有则创建。那么后续再次创建该类的实例的时候,因为已经创建过一次,就不能再创建新的实例,否则就不是单例,直接返回前面返回的实例即可。
编写
# 单例模式:(可以有很多种编写方式) class Single(type): new_obj = None def __call__(self, *args, **kwargs): if not self.new_obj: obj = super().__call__(*args, **kwargs) self.new_obj = obj return self.new_obj return self.new_obj class MyClass(metaclass=Single): def __init__(self, name): self.name = name obj1 = MyClass('jason') obj2 = MyClass('tony') print(id(obj1), id(obj2)) print(obj1.__dict__, obj2.__dict__)
单例的实现方式并不固定 而是有很多种:https://www.cnblogs.com/Dominic-Ji/p/10525994.html
''' 1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。 '''
pickle模块
只能在python中使用,只支持python的基本数据类型,是python独有的模块。序列化的时候,只是序列化了整个序列对象,而不是内存地址。
该模块可以在选课系统中使用
需求:将对象保存到文件 并且取出来之后还可以使用对象的功能 import pickle class MyClass(object): school = 'school' def __init__(self, name): self.name = name def choose_course(self): print('%s正在选课'%self.name) obj = MyClass('jason') print(obj.school) obj.choose_course() # pickle可以 # with open(r'%s'%obj.name,'wb') as f: # pickle.dump(obj, f) with open(r'jason','rb') as f: data = pickle.load(f) print(data) print(data.name) print(data.school)
这篇关于python学习-Day30的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-18初探Python股票自动化交易:入门指南
- 2024-09-18Python量化入门:轻松掌握量化分析基础与实战
- 2024-09-18Python量化交易:入门指南与实践
- 2024-09-18Python量化交易:入门指南与实战技巧
- 2024-09-14Python人工智能项目实战:从零开始的实践指南
- 2024-09-14探索Python人工智能资料:初学者的指南
- 2024-09-14Python人工智能资料:初学者的全面指南
- 2024-09-13Matplotlib入门:轻松绘制Python数据可视化图表
- 2024-09-13Python人工智能:初学者的入门指南
- 2024-09-13Python人工智能:轻松入门与实践