内置方法和模块的应用

一 . 内置方法

  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.最后导入自定义模块

posted @ 2018-08-02 21:20  古月蜀黍  阅读(213)  评论(0编辑  收藏  举报