python基础===成员访问__len__()和__getitem__()

Posted botoo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python基础===成员访问__len__()和__getitem__()相关的知识,希望对你有一定的参考价值。

class A:

    def __init__(self,*args):
        self.name = arg
        pass

    def __len__(self):
        return len(self.name)


a = A("32","asda",435)
print(len(a)) 
# 3

返回对象实例的“长度”

 

 

凡是在类中定义了这个__getitem__ 方法,那么它的实例对象(假定为p),可以像这样p[key] 取值,当实例对象做p[key] 运算时,会调用类中的方法__getitem__。

一般如果想使用索引访问元素时,就可以在类中定义这个方法(__getitem__(self, key) )。

class DataBase:
    ‘‘‘Python 3 中的类‘‘‘

    def __init__(self, id, address):
        ‘‘‘初始化方法‘‘‘
        self.id = id
        self.address = address
        self.d = {self.id: 1,
                  self.address: "192.168.1.1",
                  }

    def __getitem__(self, key):
        # return self.__dict__.get(key, "100")
        return self.d.get(key, "default")
       

data = DataBase(1, "192.168.2.11")
print(data["hi"])
print(data[data.id])

 

 

 

 

 

参考资料:

https://blog.csdn.net/u013061183/article/details/74773196

https://zhuanlan.zhihu.com/p/27661382

 


以上是关于python基础===成员访问__len__()和__getitem__()的主要内容,如果未能解决你的问题,请参考以下文章

Python3基础 __len__,__getitem__ 记录列表中元素访问的次数 定制不可变序列,下标字典

Python基础 类私有成员和保护成员

python基础类的特殊成员(类的特殊内置属性和方法)

Python基础第18天

python之使用魔术方法__getitem__和__len__

Python基础