欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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
相关标签: python item

上一篇: poj3415

下一篇: Jenkins安装与配置