__getitem__,__setitem__ 在类或者对象调用 obj["v1"] obj["v2"]='22' 等方法时 此对象的特点

首先  可以使用  obj["kq1]="fasd "  方法的对象肯定是有  __setitem__ 方法

   可以使用  obj["k2"]  方法的对象肯定有  __getitem__  方法

第一种原因:

    这个对象就是一个字典:  字典有可以使用此方法进行查询和增加等操作

  

第二种原因:

  这个obj是一个继承了dict的类的一个特殊类的实例化对象

  

class A(dict):
   #因为此种类中继承了dict类,因为dict类中有   
   # __getitem__ 和  __setitem__方法,所以可以那样操作 
    def __init__(self,name,age):
        self.name=name
        self.age=age
a=A('AD','DSF')
a["namsse"]='dfsa'

print(a['namsse'])  #打印结果  dgsa

 

第三种原因:

   z

  

class DataTest:  
    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):   #类中定义了 __getitem__方法,所以他实例化的
        return "hello"               #对象可以使用这种方式
  
data=DataTest(1,"192.168.2.11")  
print(data[2]#所以这里可以这样取值 

 

posted on 2018-04-24 19:37  王大拿  阅读(97)  评论(0)    收藏  举报

导航