自定义数据类型的几个魔术方法

打印显示类:

class Display(object):
    def show(self):
        return ", ".join("{}".format(getattr(self, key)) for key in self.__dict__)
    
    # 重写__str__定义对象的打印内容
    def __str__(self):
        return "{}".format(self.show())

创建自定义字典类,需继承Display类,否则print时只会显示内存地址:

class DictDemo(Display):
    # 创建字典
    def __init__(self, key, value):
        self.dict = {}
        self.dict[key] = value
    
    # 获取对应key的值
    def __getitem__(self, key):
        return self.dict[key]
    
    # 修改设置字典
    def __setitem__(self, key, value):
        self.dict[key] = value

    # 删除对应key的键值对
    def __delitem__(self, key):
    	del self.dict[key]

    # 获取字典长度
    def __len__(self):
        return len(self.dict)

调用:

dictDemo = DictDemo('key0','value0')    #方法一创建字典
print(dictDemo['key0'])         		#结果为value0,dictDemo["key0"]会自动调用类中的__getitem__方法
dictDemo['key1'] = 'value1'  			#自动调用类中的__setitem__方法
print(dictDemo['key1'])        			#结果为value1
print(len(dictDemo))             		#结果为2,自动调用类中的__len__方法
print(dictDemo)                    		#删除前
del dictDemo['key0']            		#自动调用类中的__delitem__方法
dictDemo['key2'] = 'value2' 			#自动调用类中的__setitem__方法
print(dictDemo)                   		#删除后

dictDemo1 = {"key0":"value0"}   		#方法二创建字典
print(dictDemo1["key0"])            	#结果为value0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值