在python中__setitem__(self,value,key)方法时python魔法方法的一种,这个方法会让类按照一定的方法存储和key映射的value。该值可以使用另一种魔法方法__getitem__(self,key)来获取。
使用场景:当期望定义的类具备按照键存储值时,即类能够执行data['key']=value
目的:如果给类定义了__setitem__方法,则可以方便的给类进行赋值。
class Fib(): #定义类Fib
def __init__(self):
self.changed={} #给类一个字典属性,方便后续的存储
def __getitem__(self, key): #定性__getitem__函数,key为类Fib的键
return self.changed[key] #当按照键取值时,返回的值为changed[key]的值
def __setitem__(self,key,value):
self.changed[key]=value #当赋值时,直接将value映射到键key上
s=Fib()
s[1]=4 #可以直接给键1赋值为4
s[1] #返回值4,该返回时执行__getitem__的结果
如果不给类Fib()定义 __setitem__方法,则会无法通直接给键赋值
class Fib(): #定义类Fib
def __init__(self):
self.changed={} #给类一个字典属性,方便后续的存储
def __getitem__(self, key): #定性__getitem__函数,key为类Fib的键
return self.changed[key] #当按照键取值时,返回的值为changed[key]的值
s=Fib()
s[1]=4 #可以直接给键1赋值为4
#返回 TypeError: 'Fib' object does not support item assignment
这种方法可以让使用者非常方便的做赋值操作,我们经常使用列表和字典,都有该方法。
原创不易,如果对你有帮助,动动小手点个赞!