静态方法
格式
@staticmethod
def .......
例子:
class BMW():
__money = 1000
brand = 'BMW BMW BMW'
@classmethod
def change(cls,brand):
cls.brand = brand
@staticmethod
def showinfo():
print('aa')
################调用静态方法##################
obj1 =BMW('asd')
obj1.showinfo
不需要self,cls
通过类对象与实例对象进行调用
就是普通的函数
用处:没什么用
单例模式
单例模式的目的:
就是为了无论创建多少个实例对象,都是用一个对象
节约系统资源
优点:
1、在单例模式中,活动的单例只有一个实例,对单例类的所有实例化得到的都是同样的一个实例,确保所有的对象访问的一个实例
2、提供了对唯一实例的受控访问
3、内存中只有一个对象,节约系统资源
4、可以实现可变数目的实例
5、避免对资源的多重占用
缺点:
1、不适用变化的对象,单例会引起数据错误
2、扩展有困难
3、开销问题
应用场景:
资源管理类一般设计成单例模式
需要频繁实例化然后销毁的对象
创建对象耗时或者耗费资源过多但又经常用到的对象
有状态的工具类对象
频繁访问数据库或者文件的对象
class Test1():
#用一个类属性保存new方法创建出来的对象
__obj1 = None
#重写 new 方法
def __new__(cls,*args,**kwargs):
#添加创建单例的条件
if __obj1 ==None: #如果没有对象
#调用父类(object类)new方法创建对象,因为new方法就是用来创建对象的方法
cls.__obj1 = object.__new__(cls)
#返回创建出来的对象
return cls.__obj1
#__init__方法重复调用
def __init__(self)
工厂模式
概念:
类似将生产环节重新创建了一个类或者函数,工厂函数或工厂类对生产环节进行了封装,有利于代码后续的扩展
个人理解:
在一个大的类里 创建并返回许多其他类,类似 造车厂(大的类)可以造很多 其他品牌(其他类) 的车
例子:
class Carshop():
def __init__(self,brand):
self.brand = brand
def creat_car(self,brand):
if self.brand == 'BMW':
return BMW()
else self.brand == 'BYD':
return BYD()
class BMW():
pass
class BYD():
pass
class Benchi():
pass
异常处理
简写
try:
b = 1/0
print('step1')
except Exception as e :
print('异常')
try 分支 若是发生错误,try中的出错的语句的后面 就不再执行了
except 分支 try中的语句出现错误就进入except 分支
finally 分支 中的语句一定会执行到,一般用于关闭文件 关闭链接,
else 分支 当try中的语句能够正常执行的时候 才会进入else 中的语句
try:
b = 1/0
print('step1')
except Exception as e :
print('异常')
else:
print('else')
finally:
print('finally')
参考学习资料:http://www.bjsxt.com/