#大家都知道,平常操作class类的或者object对象的属性,都是用:类名/对象名.属性名
#其实,这种操作方法就是在启动调用与attr内置方法相关的函数:
# __getattr__()、__setattr__()、__delattr__()
#----------------------item系列函数---------------------------------------
#其实:class类或者object对象的属性还可以使用类似字典dict的操作方法:类名/对象名[属性名]
#这样,就是在调用item相关的内置函数:
# __getitem__()、__setitem__()、__delitem__()
#注意:item系列方法,都必须写出来,才会调用;否则不会支持:类名/对象名[属性名];
#写出来后,就两种操作属性的方式都可以支持;代码如下
#区别:attr系列,不写出来,默认支持:类名/对象名.属性名
# item系列,若不写出来,不支持:类名/对象名[属性名]
class Foo:
def __init__(self,high,weight,job):
self["high"]=high#只有当下面写了item系列方法后,这样run代码才会成功,否则会报错;因为这样已经调用了item系列方法
self["weight"]=weight
self.job=job
def __getitem__(self, item):
print("启动__getitem__")#这句话只是看运行效果,是否启动该函数
return self.__dict__[item]
def __setitem__(self, key, value):
print("启动__setitem__")#这句话只是看运行效果,是否启动该函数
self.__dict__[key]=value
def __delitem__(self, key):
print("启动__delitem__")#这句话只是看运行效果,是否启动该函数
self.__dict__.pop(key)
if __name__ == '__main__':
f=Foo(170,70,"演员")
f["name"]="吴奇隆"
print(f["name"])
python---class:item系列方法 (区别:attr系列方法)
最新推荐文章于 2024-07-17 11:21:23 发布