面向对象基础

Posted tengx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象基础相关的知识,希望对你有一定的参考价值。

# 析构方法

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方法

 

以上是关于面向对象基础的主要内容,如果未能解决你的问题,请参考以下文章

Python面向对象学习之八,装饰器

Java基础:封装

面向对象基础

Python基础 面向对象

python基础之面向对象

Python面向对象基础