前言:

创建自己的对象来实现内建类型的访问。

一、_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查找对象对应的类,__ __-Data类的基类
print(data.__class__, data.__dict__)
print(Data.__ s__)
data.text = \'c\'
data.__dict__[\'text\'] = \'d\'
print(data.text)
收藏 打印