在python的类中定义了特殊方法__setitem__,这个方法与之对应是之前咱们学习的__getitem__方法,具体的可以查看这里的笔记https://sulao.cn/post/859,一个是用key的方式获取,一个是用key的方式来设置对象的值为新值,注意,设置的对象应该是存在,当然这个对象可变时才需要实现这个方法
我们还是直接使用上次的例子修改下
class TestFunc:
ip = "127.0.0.1"
port = 80
addr = {
"ip": ip,
"port": port
}
def __getitem__(self, key):
# return self.__dict__.get(key, "ip")
return self.addr.get(key)
def __setitem__(self, key, value):
self.addr[key] = value
addr = TestFunc()
print(addr.__getitem__("port"))
addr.__setitem__("port", 8080)
print(addr.__getitem__("port"))
addr["port"] = 8081
print(addr.__getitem__("port"))打印
80 8080 8081
通过上述例子我们可以看到当调用字典的方式设置对象中的属性时,那么会自动触发__setitem__特殊方法
这里需要我们注意的是,当使用__setitem__特殊方法修改了对象以后,需要获取动态的修改结果时也需要使用__getitem__方法获取,所以如果我们使用addr.port将会获得未修改的对象未修改属性port的值,即80
内容版权声明:除非注明,否则皆为本站原创文章。
转载注明出处:https://sulao.cn/post/863
评论列表