# _*_ coding: utf-8 _*_"""python_magic_methods.py by xianhu"""# 定义一个能够自动比较大小的People类class People(object):def __init__(self, name, age):self.name = nameself.age = agereturndef __str__(self):return self.name + ":" + str(self.age)def __lt__(self, other):return self.name < other.name if self.name != other.name else self.age < other.ageprint("\t".join([str(item) for item in sorted([People("abc", 18), People("abe", 19), People("abe", 12), People("abc", 17)])]))# Python实现任意深度的赋值 例如a[0] = 'value1'; a[1][2] = 'value2'; a[3][4][5] = 'value3'class MyDict(dict):def __setitem__(self, key, value): # 该函数不做任何改动 这里只是为了输出print("setitem:", key, value, self)super().__setitem__(key, value)returndef __getitem__(self, item): # 主要技巧在该函数print("getitem:", item, self)# 基本思路: a[1][2]赋值时 需要先取出a[1] 然后给a[1]的[2]赋值if item not in self: # 如果a[1]不存在temp = MyDict() # 则需要新建一个dictsuper().__setitem__(item, temp) # 并使得a[1] = dictreturn temp # 返回a[1] 使得a[1][2] = value有效return super().__getitem__(item) # 如果a[1]存在 则直接返回a[1]# 使用例子:test = MyDict()test[0] = 'test'test[1][2] = 'test1'test[3][4][5] = 'test2'print("==========================")
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。