• 内置方法和模块的应用


    一 . 内置方法

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

  • 相关阅读:
    Javascript面向对象编程(三):非构造函数的继承
    zabbix java api
    Hbase架构与原理
    Hbase集群监控
    kafka使用场景
    Java curator操作zookeeper获取kafka
    Docker网络基础:快速指南
    JPA Advanced Mappings(映射)
    9.Spark Streaming
    7.spark共享变量
  • 原文地址:https://www.cnblogs.com/hu13/p/9410005.html
Copyright © 2020-2023  润新知