我有一些代码来定义一个主要实体是字典的类。例如:
class MyDictionary:
def __init__(self):
self.__my_dict = {'a': 1,
'b': 2,
'c': 3}
def __getitem__(self, item):
return self.__my_dict[item]
def __len__(self):
return len(self.__my_dict)
def keys(self):
# ?
def items(self):
# ?
my_dict = MyDictionary
for key, value in my_dict.items():
print([key, value])
for key in my_dict.keys():
print(my_dict[key])
我应该如何定义成员函数,以便我可以使用 []
、len()
、keys()
、items()
类实例 my_dict
上的运算符就好像它是一本字典?
最佳答案
#!/usr/bin/env python
class MyDictionary:
def __init__(self, my_dict):
self.my_dict = my_dict
def __getitem__(self, item):
return self.my_dict[item]
def __len__(self):
return len(self.my_dict)
def items(self):
return self.my_dict.items()
def keys(self):
return self.my_dict.keys()
def values(self):
return self.my_dict.values()
if __name__ == '__main__':
d = {'a': 1,'b': 2,'c': 3}
di = MyDictionary(d)
print(di.__len__())
print(di.items())
print(di.keys())
print(di.values())
print(di.__getitem__('b'))
输出:
3
dict_items([('a', 1), ('b', 2), ('c', 3)])
dict_keys(['a', 'b', 'c'])
dict_values([1, 2, 3])
2
关于Python 为自定义类定义 []、len()、items() 和 keys() 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55023740/