item系列和__eqal__方法
程序员文章站
2022-05-11 23:16:59
...
item系列 和对象使用[]访问值有联系
一般带有双下划线的方法,都不是直接调用的
引子:
obj = {"k": "v"}
print(obj) # 字典的对象
print(obj["k"]) # 字典的对象可以通过键去取值
那么其他的类对象是否可以这样取值呢
class B:
pass
b = B() # 小b也是一个对象
b["a"] # 那么这个对象是否可以像字典对象一样取值呢
#结果
# TypeError: 'B' object is not subscriptable
显然是不可以的
正常情况下,是不可以通过中括号取值的,如要非要这样的取值的话是可以的
class B:
def __getitem__(self, item):
print("执行我了", item)
return "bbbb"
b = B() # 小b也是一个对象
print(b["a"])
# 结果
# 执行我了 a
# bbbb
所以,[]操作一个对象和item有着千丝万缕的关系
class B:
def __getitem__(self, item):
print("执行我了", item)
return "bbbb"
b = B() # 小b也是一个对象
print(b["a"])
print(b["k"])
# 结果
# 执行我了 a
# bbbb
# 执行我了 k
# bbbb
相当于我用b对象拿什么都是它的返回值,返回值如果是固定的,拿到的就是固定的值,如果不是固定的,拿到的就是动态的,个性的值
看__setitem__
class B:
def __getitem__(self, item):
print("执行我了", item)
return "bb
上一篇: poj3415
下一篇: Jenkins安装与配置
推荐阅读
-
从零学python系列之浅谈pickle模块封装和拆封数据对象的方法
-
asp.net core系列之模型绑定和验证方法
-
Android ListView的item背景色设置和item点击无响应的解决方法
-
asp.net core系列之模型绑定和验证方法
-
从零学python系列之浅谈pickle模块封装和拆封数据对象的方法
-
实现纸牌游戏的随机抽牌洗牌过程(item系列几个内置方法的实例)
-
从零开始学习Node.js系列教程六:EventEmitter发送和接收事件的方法示例
-
Java日期时间API系列30-----Jdk8中java.time包中的新的日期时间API类,减少时间精度方法性能比较和使用。
-
Android ListView的item背景色设置和item点击无响应的解决方法
-
从零开始学习Node.js系列教程三:图片上传和显示方法示例