前言:
创建自己的对象来实现内建类型的访问。
一、_getitem_
想使用索引访问元素时,就可以在类中定义这个方法(_getitem_(self, key) )
二、_dict_
对象的属性储存在对象的__dict__属性中,Python中的属性是分层定义的即每一层的__dict__只存储该层新增的属性。子类不需要重复存储父类中的属性。。
三、例子
class Demo:
pass
class Data(Demo):
def __init__(self, text, value):
self.text = text
self.dicta = {self.text: value}
def __getitem__(self, key):
return self.dicta.get(key, "default")
# return self.__dict__.get(key, "100")
# result = self.text[key].upper()
# return result
def __setitem__(self, key, value):
self.dicta[key] = value
def __len__(self):
pass
data = Data('a', 'b')
data["b"] = 22
print(data["a"], data["b"])
# __class__-data查找对象对应的类,__base__-Data类的基类
print(data.__class__, data.__dict__)
print(Data.__bases__)
data.text = 'c'
data.__dict__['text'] = 'd'
print(data.text)