今日内容详细

作业讲解

编写元类规定对象的所有数据值转大写
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的更多相关文章

  1. Python学习--04条件控制与循环结构

    Python学习--04条件控制与循环结构 条件控制 在Python程序中,用if语句实现条件控制. 语法格式: if <条件判断1>: <执行1> elif <条件判断 ...

  2. Python学习--01入门

    Python学习--01入门 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.和PHP一样,它是后端开发语言. 如果有C语言.PHP语言.JAVA语言等其中一种语言的基础,学习Py ...

  3. Python 学习小结

    python 学习小结 python 简明教程 1.python 文件 #!/etc/bin/python #coding=utf-8 2.main()函数 if __name__ == '__mai ...

  4. Python学习路径及练手项目合集

    Python学习路径及练手项目合集 https://zhuanlan.zhihu.com/p/23561159

  5. python学习笔记-python程序运行

    小白初学python,写下自己的一些想法.大神请忽略. 安装python编辑器,并配置环境(见http://www.cnblogs.com/lynn-li/p/5885001.html中 python ...

  6. Python学习记录day6

    title: Python学习记录day6 tags: python author: Chinge Yang date: 2016-12-03 --- Python学习记录day6 @(学习)[pyt ...

  7. Python学习记录day5

    title: Python学习记录day5 tags: python author: Chinge Yang date: 2016-11-26 --- 1.多层装饰器 多层装饰器的原理是,装饰器装饰函 ...

  8. [Python] 学习资料汇总

    Python是一种面向对象的解释性的计算机程序设计语言,也是一种功能强大且完善的通用型语言,已经有十多年的发展历史,成熟且稳定.Python 具有脚本语言中最丰富和强大的类库,足以支持绝大多数日常应用 ...

  9. Python学习之路【目录】

    本系列博文包含 Python基础.前端开发.Web框架.缓存以及队列等,希望可以给正在学习编程的童鞋提供一点帮助!!! 目录: Python学习[第一篇]python简介 Python学习[第二篇]p ...

随机推荐

  1. 微服务部署 docker-compose

    1.docker-maven-plugin 介绍 在我们持续集成过程中,项目工程一般使用 Maven 编译打包,然后生成镜像,通过镜像上线,能够大大提供上线效率,同时能够快速动态扩容,快速回滚,着实很 ...

  2. IDEA使用Docker插件构建镜像

    IDEA使用Docker插件构建镜像 记一次坑  第一次插件docker-maven-plugin的 配置文件中没写远程主机的地址 <dockerHost>http://192.168.1 ...

  3. 说说for循环的两种写法

    for循环 执行多次,条件写在()里,语法形式: 1 2 3 for(计数器变量;条件;计数器增减){ // 将要执行的代码 } 示例: 1 2 3 for (int i = 0; i < 5; ...

  4. Redis 回收进程如何工作的?

    一个客户端运行了新的命令,添加了新的数据.Redi 检查内存使用情况,如 果大于 maxmemory 的限制, 则根据设定好的策略进行回收.一个新的命令被执 行,等等.所以我们不断地穿越内存限制的边界 ...

  5. Linux 环境下如何查找哪个线程使用 CPU 最长?

    1.获取项目的 pid,jps 或者 ps -ef | grep java,这个前面有讲过 2.top -H -p pid,顺序不能改变

  6. mapper.xml文件中标签没有提示的解决

    1.首先我们来看看mapper.xml的头文件 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTY ...

  7. Java 新内存(cache)模型解析

    JMM 相关文档: Java Language Specification Chapter 17 The JSR-133 Cookbook for Compiler Writers - Doug Le ...

  8. MySQL索引如何优化?二十条铁则

    索引的相信大家都听说过,但是真正会用的又有几人?平时工作中写SQL真的会考虑到这条SQL如何能够用上索引,如何能够提升执行效率?  前言 索引的相信大家都听说过,但是真正会用的又有几人?平时工作中写S ...

  9. ROS学习文章

    ros机器人到底有没有必要学习?

  10. PCB设计常见规则及基本原则

    一.PCB基础知识 1.全称:印制电路板或者印制线路板 2.分类 材质分类:硬板(Rigid PCB).软板FPC(Flexible PCB).软硬结合板(Rigid-Flex PCB).HDI板(含 ...