前言
- python中除了可以使用内建的类型,如list,tuple,dict,还可以创建自己的对象来实现像这些内建类型的访问,不过需要在定义类的时候对一些魔法方法逐一实现。
一句话解释
- 有点儿类似于C++中的运算符重载.也有点像在C中创建一个类的时候会创建get方法和set方法,以便于访问实例化对象的值.
代码
class DictDemo:
def __init__(self,key,value):
self.dict = {}
self.dict[key] = value
print("__init__Use")
def __getitem__(self,key):
print('__getitem__Use')
return self.dict[key]
def __setitem__(self,key,value):
print('__setitem__Use')
self.dict[key] = value
def __len__(self):
print('__len__Use')
return len(self.dict)
dictDemo = DictDemo('key0','value0')
# __init__Use
print(dictDemo['key0']) #value0
# __getitem__Use
dictDemo['key1'] = 'value1'
# __setitem__Use
print(dictDemo['key1']) #value1
# __getitem__Use
print(len(dictDemo)) #2
# __len__Use
输出
__init__Use
__getitem__Use
value0
__setitem__Use
__getitem__Use
value1
__len__Use
2
Reference
python四个魔法方法__len__,getitem,setitem,delitem