Python基础(反射方法、设计模式、文件操作)

反射方法

hasattr(obj,name)
    判断该对象中是否包含名称name的属性
setattr(obj,name,value)
    给名称为name的属性设置value值
getattr(obj,name)
    获取名称为name的属性的具体数据
delattr(obj,name)
    删除名称为name的属性

设计模式

设计模式没有其固定格式,只是代码设计经验的组总结被多数人知晓
说到设计模式,就不得不提软件开发的六大原则:

1、开闭原则
2、里氏替换原则
3、依赖倒置原则
4、接口隔离原则
5、迪米特法则
6、单一职责

常见的23种设计模式:
创建型模式:

   单例模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式

结构型模式:

适配器模式、装饰模式、桥接模式、组合模式、享元模式、代理模式、外观模式

行为型模式:

 观察者模式、访问者模式、中介者模式、解释器模式、迭代器模式、状态模式、命令模式、策略模式、备忘录模式、职责模式、模块方法模式

在这里只做单例模式和工厂模式的介绍

单例模式

为保证数据的一致性,在任何时候获取的都是同一个对象,这时使用单例模式

class MyData:
	_flag = False  # 定义了一个标志位

	def __new__(cls, *args, **kwargs):
		if not cls._flag:
			# 判断是否已有对象
			cls._flag = object.__new__(cls)
		return cls._flag

工厂模式

为了不对用户暴露创建逻辑,通过一个接口来创建不同的对象,我们会使用工厂模式
例:有一个车辆制造厂,可以制造摩托车也可以制造汽车,只需要去制造厂中提车,不用知道车辆是怎么制造的

class Moto:
	def __init__(self, name):
		self.name = name
	def fly(self):
		print(f"骑着{self.name}牌摩托向上飞")
class Car:
	def __init__(self,name):
		self.name = name
	def fly(self):
		print(f"开着{self.name}牌汽车飞")
class Choice:
	def chioce(self, key, name):
		if key == 1:
			return Moto(name)
		else:
			return Car(name)

k = Choice()
m = k.choice(1, "宝马")
m.fly()

文件操作

打开文件

open()方法

open(file,mode=‘r’,encoding=None,buffering=-1)
file:需要操作的文件路径,可以是相对路径,也可以是绝对路径
mode:文件的操作模式  默认为 r
r:只读   
w:写
若文件不存在则会自动创建,
如果文件已存在,并且有内容,将会将原内容覆盖掉
a:追加写
      如果文件不存在会自动创建
      如果文件已存在,并且有内容,不会覆盖原内容,跟在原内容后面写
br:以只读的形式打开二进制文件
bw:以二进制的形式写入到文件中
ad:二进制文件的追加写
encoding:指定哪一种编码格式去操作文件
buffering:buffering的值被设为-1,则为系统默认缓存,0不会寄存,1表明寄存区的大小

读取操作

read()读取文件所有内容
readline() 读取一行,并且自带换行功能,每一行末尾会读到\n
readlines() 一次性以行的形式读取文件的所有内容返回的是一个列表,需要去遍历读取

写入

write(内容)
writelines(list) 将多行内容一次性写入文件

with语法

将文件的操作步骤进行优化处理,不需要手动关闭
格式:
with open() as 别名:
操作文件的代码
Python基础(反射方法、设计模式、文件操作)_第1张图片

你可能感兴趣的:(设计模式,python)