Python super方法及__setattr__方法详解

Posted fmaj7

tags:

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

    def __setattr__(self, name, value):
        """
        Set the value of setting. Clear all cached values if _wrapped changes
        (@override_settings does this) or clear single values when set.
        """
        if name == ‘_wrapped‘:
            self.__dict__.clear()
        else:
            self.__dict__.pop(name, None)
        super(LazySettings, self).__setattr__(name, value)

    1、执行完当前类的_setattr__方法再执行LazySettings类的父类的__setattr__方法
    2、当类含有__setattr__方法时,对象初始化自动执行该方法。

    3、在实例化的时候,会进行初始化,在__init__里,对value的属性值进行了设置,这时候会调用__setattr__方法。

    在对name重新设置值的时候,会再次进入__setattr__方法。

    需要注意的地方是,在重写__setattr__方法的时候千万不要重复调用造成死循环。

  

以上是关于Python super方法及__setattr__方法详解的主要内容,如果未能解决你的问题,请参考以下文章

29.Python面向对象类:主要讲初始化方法__init__,垃圾回收,继承&多继承,方法重写,super()函数

29.Python面向对象类:主要讲初始化方法__init__,垃圾回收,继承&多继承,方法重写,super()函数

(转)Python自动化运维之13异常处理及反射(__import__,getattr,hasattr,setattr)

python元编程之使用动态属性实现定制类--特殊方法__setattr__,__getattribute__篇

菜鸟容易中的招__setattr__

Python魔法方法(13):__setattr __(self, key, value) 方法