内置方法和模块的应用
一 . 内置方法
1.__del__ 析构方法 释放一个空间之前执行
某对象借用了操作系统的资源,还要通过析构方法归还回去 : 文件资源 网络资源
class File(): # 处理文件的 def __init__(self,file_path): self.f = open(file_path) self.name = 'alex' def read(self): self.f.read(1024) def __del__(self): # 是去归还/释放一些在创建对象的时候借用的一些资源 # del 对象的时候 程序员触发 # python解释器的垃圾回收机制 回收这个对象所占得内存的时候 python自动触发的 self.f.close() f = File('文件名') f.read() 不管是主动还是被动,这个f对象总会被清理掉,被清理掉就触发__del__方法,触发这个方法就会归还操作系统的文件资源
2.__getitem__ 3__setitem__ 4.__delitem__
(1)这些内置方法和对象使用[]访问值有关系
(2)在内置的模块中, 有一些特殊的方法要求对象必须实现__getitem__/__setitem__才能使用
class A: def __getitem__(self, item): return getattr(self, item) def __setitem__(self, key, value): setattr(self, key, value) def __delitem__(self, key): delattr(self,key) b = A() b["k"] = "v" print(b["k"]) del b["k"] print(b.__dict__)
5.__hash__
# 一个类 # 对象的属性 : 姓名 性别 年龄 部门 # 员工管理系统 # 内部转岗 python开发 - go开发 # 姓名 性别 年龄 新的部门 # alex None 83 python # alex None 85 luffy # 1000个员工 # 如果几个员工对象的姓名和性别相同,这是一个人 # 请对这1000个员工做去重 class Employee: def __init__(self,name,age,sex,partment): self.name = name self.age = age self.sex = sex self.partment = partment def __hash__(self): return hash('%s%s'%(self.name,self.sex)) def __eq__(self, other): if self.name == other.name and self.sex == other.sex: return True employ_lst = [] for i in range(200): employ_lst.append(Employee('alex',i,'male','python')) for i in range(200): employ_lst.append(Employee('wusir',i,'male','python')) for i in range(200): employ_lst.append(Employee('taibai', i, 'male', 'python')) # print(employ_lst) employ_set = set(employ_lst) for person in employ_set: print(person.__dict__) # set集合的去重机制 : 先调用hash,再调用eq,eq不是每次都触发,只有hash值相等的时候才会触发
1.字典的寻址
2.set去重的机制
6.__eq__
1.__eq__通过==调用
class A: def __init__(self, name, sex, age): self.name = name self.sex = sex self.age = age def __eq__(self, other): if self.sex == other.sex and self.age == other.age: return True a1 = A("胡俊", "男", 18) a2 = A("付宁波", "男", 18) print(a1, a2) print(a1 == a2)
二. 模块
1.初识模块
(1)别人写好的一组功能,一般在文件夹/py文件/c语言编译好的一些编译文件
(2)用模块的好处 1.分类管理方法 2.节省内存 3.提供更多的功能
2.模块的分类
(1)内置模块 python自带的
(2)第三方模块/扩展模块 需要自己安装:如django flask
(3)自定义模块 自己定义的模块
3.模块的创建与导入
(1)impor + 模块名
4.模块的重命名
(1)import模块名 as 新模块名
5.导入多个模块
(1) 分多行导入
(2)所有的模块都尽量放在这个文件的开头
(3)模块的导入顺序
1.先导入内置模块
2.再导入第三方模块/扩展模块
3.最后导入自定义模块