类的双下划线方法(1)
定义:双下线方法是类的特殊方法,是由双下划线加方法名加双下划线 方法名的具有特殊意义的方法,双下方法主要是python源码程序员使用的,我们在开发中尽量不要使用双下方法,但是深入研究双下方法,更有益于我们阅读源码。
调用:不同的双下方法有不同的触发方式,就好比盗墓时触发的机关一样,不知不觉就触发了双下方法,例如:init
len方法
class A:def __len__(self):print(666)return 3
a = A()
print(len(a)) # len 一个对象就会触发这个对象的 __len__方法。
class B:def __init__(self):self.a = 1self.b = 2def __len__(self):return len(self.__dict__)
b = B()
print(len(b))
hash方法
class A:def __init__(self):self.a = 1self.b = 2def __hash__(self):print("hash method.")return hash(str(self.a)+str(self.b))
a = A()
print(hash(a))
eq方法
class A:def __init__(self):self.a = 1self.b = 2def __eq__(self,obj):print("call eq method.")if self.a == obj.a and self.b == obj.b:return True
a = A()
b = A()
print(a == b)
item系列
可以把一个对象变成dict, 可以像dict一样增删改查
class Brand:def __init__(self,name):self.name=namedef __getitem__(self, item):print("获取KEY",item)print(self.__dict__[item])def __setitem__(self, key, value):print("设置一个key...",key)self.__dict__[key]=valuedef __delitem__(self, key):print('del obj[key]时,我执行')self.__dict__.pop(key)def __delattr__(self, item):print('del obj.key时,我执行')self.__dict__.pop(item)
b=Brand('小猿圈')
b["slogan"] = "自学编程谁不爱小猿圈"
b["website"] = "apeland.cn"
del b["website"]
b['name']='小猿圈Apeland'
b["name"] # 获取KEY
print(b.__dict__)
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
