单例设计模式:
1.设计模式是针对某一个特定问题成熟的解决方案
2.使用设计模式是为了可重用代码,让代码更容易理
3.解,保证代码的可靠性
4.让类创建的对象,在系统中只有唯一的一个实例
每次执行 类名()返回对象,内存的地址是相同的
__new__方法
在使用类名()创建对象的时候,python的解释器会调用__new__方法为对象,分配空间
__new__是一个由object的基类提供的静态的方法
1)在内存中为对象分配空间
2)返回对象的调用
当python的解释器获得对象的引用的时候,将引用的第一个参数,传递给__init__方法
重写__new__方法一定要return super().new(cls)否则python的解释器得不到分配了空间的引用对象,就不会调用对象的初始化方法
注意:__new__是一个静态的方法,在调用的时候需要主动的传递cls参数,类属性的调用需要使用 cls.类属性
class MusicPlayer(object):
def __new__(cls, *args, **kwargs):
#创建对象的时候,new方法会被自动的调用,方法被重写,不会再调用父类中的__new__方法
print("创建对象,分配空间")
return super().__new__(cls)
def __init__(self):
print("播放器初始化!")
player=MusicPlayer()
print(player)
python中的模块
每一个扩展名py结尾的python源代码都是一个核心的模块
模块名同样是一个标识符,复合标识符的命名规则
模块就是工具包,想要使用这个工具,就需要先导入这个模块
模块的导入方式:
import导入
import 模块名一
import 模块名二
通过 模块名. 的方式使用模块工具,还可以是用as指定模块的名称以方便在代码的使用,模块名符合大驼峰命名
2.from…import导入:
如果希望从一个模块中,导入部分的工具,就可以使用from…import的方式导入
#从模块中导入部分的工具
from 模块名1,import 工具名
在开发中,import导入的语句应放在代码的顶部
当导入的工具名相同时,会对第一次导入的工具名进行覆盖,可以使用as对第一次的工具名起别名
3.from…import *
从模块中导入所有工具
from 模块名 import*
__file__可以查看当前模块属性的路径
每一个python文件都是可以被导入的
__name__属性
__name__属性可以做到测试代码块。只在测试的情况下被运行,在被导入时不会被执行
__name__是python中的内置函数,记录一个字符串
如果是被其他的文件导入的,__name__输出的就是模块名
如果是当前执行的程序,name__输出的就是__main
python中的包:
包是一个含有多个模块的特殊目录,目录下方有一个特殊的文件__init__.py,包的命名方法:小写字母+_,使用import 包名,可以一次性的导入包中的所有模块
init.py
要在外界使用包中的模块,需要在__init__.py中指定对外界的模块的列表
从当前的目录导入模块的列表
from .import send_message
from .import receive_message
发布自己的模块:
创建setup.py的文件
构建模块
生成发布压缩包
文件的基本操作:
计算机上的文件就是存储在设备上的数据,计算机上的文件是以二进制的方式保存的
1.打开文件
2.读写文件,读,将文件读入内存,写,将文件写入内存
3.关闭文件
操作文件函数和方法:一个函数,和三个方法
open:打开文件,返回文件操作对象
read:将文件读取到内存
write:将指定内容写入到文件
close:关闭文件
read方法——读取文件
open函数的第一个函数是要打开的文件名(区分文件名)
如果文件存在,返回文件的操作对象
如果文件不存在,会抛出异常
read方法可以一次性读入并返回文件的所有内容
close方法用于关闭文件,如果文件忘记关闭,会造成系统资源消耗,会影响后续对文件的访问,当方法执行后,会将文件指针移动到文件的末尾,如果再次调用read函数时,不会再读取到任何的内容
open函数默认的打开方式以只读的方式打开文件,返回文件的本身
f=open("文件名","访问方式")
readline方法:
readline方法可以一次读取一行的内容
方法执行后会把文件的指针移动到下一行,再次读取
file=open("kaka")
while True:
text=file.readline()
if not text:
break
print(text)
file.close()
小文件的复制
读取完整的内容,并写入另一个文件
#1.打开文件
file1=open("kaka")
file2=open("kaka附件","w")
# 2.读写文件
text=file1.read()
file2.write(text)
# 3.关闭文件
file1.close()
file2.close()
大文件的复制:
打开一个已有的文件逐行的读取内容,并按顺序写入到另一个文件
#打开文件
file1=open("kaka")
file2=open("kaka复制","w")
while True:
test=file1.readline()
if not test:
break
file2.write(test)
#关闭文件
file1.close()
file2.close()