item系列内置函数

本文深入探讨了Python中特殊魔法方法的使用,特别是__setattr__、__getattr__、__delattr__、__getitem__、__setitem__和__delitem__等方法在自定义类中的作用。通过实例演示了如何通过这些方法实现对类属性的动态管理和访问。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

点的方式操作属性与attr相关:

中括号的方式操作属性与item系列相关

import sys,os

BASEDIR = os.path.dirname(os.path.dirname(os.path.abspath(file)))
sys.path.append(BASEDIR)

if name == ‘main’:

class Foo:
    x = 1
    def __init__(self, name):
        self.name = name

    def __getitem__(self, item):
        print('getitem执行啦')
        return self.__dict__[item]

    def __setitem__(self, key, value):
        print('setitem执行啦')
        self.__dict__[key] = value

    def __delitem__(self, key):
        print('delitem执行啦')
        self.__dict__.pop('name')

    def __getattr__(self, item):
        print('getattr执行啦')

    def __setattr__(self, key, value):
        print('setattr执行啦')
        self.__dict__[key] = value

    def __delattr__(self, item):
        print('delattr执行啦')

f1 = Foo('zhangli')   #触发__setattr__
f1.name = 'zhouyun'   #触发__setattr__
del f1.name        #触发__delattr__
f1.y          #在没有查找到属性时,触发__getattr__

f1['name']               #触发__getitem__
f1['name'] = 'yuanhao'    #触发__setitem__
del f1['name']           #触发__delitem__

输出:
setattr执行啦
setattr执行啦
delattr执行啦
getattr执行啦
getitem执行啦
setitem执行啦
delitem执行啦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值