Python魔法方法(17):__delete __(self, instance) 方法

Posted youzhouliu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python魔法方法(17):__delete __(self, instance) 方法相关的知识,希望对你有一定的参考价值。

Python 的对象天生拥有一些神奇的方法,它们总被双下划线所包围,它们是面向对象的 Python 的一切。它们是可以给你的类增加魔力的特殊方法,如果你的对象实现(重载)了某一个魔法方法,那么这个方法就会在特殊的情况下自动被 Python 所调用。

功能

定义描述符的值被删除时的行为。

参数

self 表示描述符类的对象,instance 表示被代理的类的实例对象。

返回值

无。

示例

class MyTest(object):
    def __init__(self, name):
        self.name = name

    def __set__(self, instance, value):
        instance.__dict__[self.name] = value

    def __delete__(self, instance):
        print(f'删除指定属性。')
        instance.__dict__.pop(self.name)


class MyTest2(object):
    name = MyTest('name_val')


sample = MyTest2()
sample.name = 'zhang san'
print(f'删除前,对象中的属性:sample.__dict__')
# 属性被删除了
del sample.name
print(f'删除后,对象中的属性:sample.__dict__')

使用__delete__方法时,如果发现属性值,则该方法应该删除属性值,否则将引发AttributeError异常。

以上是关于Python魔法方法(17):__delete __(self, instance) 方法的主要内容,如果未能解决你的问题,请参考以下文章

Python3 魔法方法:描述符(property的实现原理)

Python基础——魔法方法

Python基础——魔法方法

Python046--魔法方法:描述符

Python 魔法方法~~

python魔法方法