zoukankan      html  css  js  c++  java
  • 面向对象基础(六)

    # 析构方法
    
    class F:
        def __init__(self,filePath):
            self.f = open(filePath)
        def __del__(self):
            self.f.close()
            print(11)
    
    f1 = F('demo.py')
    # 当python文件执行完毕,垃圾回收机制会回收变量,当对象a1被删除时则触发del方法
    
    
    # 关于item系列
    
    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)
    a1 = A()
    
    a1['k'] = 'value'
    
    print(a1['k'])
    
    # 当用[]访问时就会触发item系列
    # 这里我看一个去重的案例
    # 1000个员工
    # 如果几个员工对象的姓名和性别相同,这是一个人
    # 请对这1000个员工做去重
    
    # 首先创建一个员工类
    
    class Staff:
        def __init__(self,name,age,sex,partment):
            self.name = name
            self.age = age
            self.sex = sex
            self.partment = partment
    
        # 自己给对象指定一个hash算法
        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
    lst = []
    
    for i in range(200):
        lst.append(Staff('Tian',i,'','OAM'))
    
    for i in range(200):
        lst.append(Staff('Xian',i,'','OAM'))
    
    
    for i in range(200):
        lst.append(Staff('Sian',i,'','OAM'))
    
    lst = set(lst)
    print(lst)
    
    # 在set集合去重的时它首先计算hash值,当值不相同时它会比较两个值是否相同,因为每个对象的内存都是不相同的所以我们这里也需要自己定义eq方法
  • 相关阅读:
    spark的环境安装
    (7)zabbix资产清单inventory管理
    (6)zabbix主机与组配置
    (5)zabbix配置详解
    (4)zabbix监控第一台服务器
    (3)zabbix用户管理
    (2)zabbix硬件需求
    (1) zabbix进程构成
    centos7系统root无法通过su切换到某个普通用户
    01基础复习
  • 原文地址:https://www.cnblogs.com/tengx/p/11954270.html
Copyright © 2011-2022 走看看