码迷,mamicode.com
首页 > 编程语言 > 详细

Python super方法及__setattr__方法详解

时间:2020-06-20 10:19:43      阅读:112      评论:0      收藏:0      [点我收藏+]

标签:tin   重写   app   实例化   this   elf   实例   set   def   

    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__方法详解

标签:tin   重写   app   实例化   this   elf   实例   set   def   

原文地址:https://www.cnblogs.com/Fmaj7/p/13167656.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!