当前位置: 首页 > news >正文

上海设计网站与重庆seo搜索引擎优化平台

上海设计网站与,重庆seo搜索引擎优化平台,建设地方性宠物网站,wordpress一页主题1 python属性管理getattr、getattribute、setattr和delattr避免循环 在__getattr__()、__getattribute__()和__setattr__()方法体内#xff0c;通过self进行对应的点号运算、赋值运算#xff0c;会自动调用当前实例的相应方法#xff0c;导致无限循环。通过object或者__dic…1 python属性管理getattr、getattribute、setattr和delattr避免循环 在__getattr__()、__getattribute__()和__setattr__()方法体内通过self进行对应的点号运算、赋值运算会自动调用当前实例的相应方法导致无限循环。通过object或者__dict__可以避免循环。 NO项目方法体内避免循环1__getattr__()已定义属性attrself.attr2__getattribute__()object.__getattribuite__(self,attr)3__setattr__()object.__setattr__(self,attr,value) self.__dict__[attr]value4__delattr__()object.__delattr__(self,attr) del self.__dict__[attr] 1.1 getattr 未定义属性attr进行点号运算-实例名.attr时自动调用__getattr__()方法所以可以在方法体对已定义属性进行点号运算不会产生循环因为实例名.已定义属性不会触发__getattr__()方法。注意方法体内不能对未定义属性进行点号运算否则会产生循环。 1.1.1 self.attr触发无限循环 描述 getattr方法体内未定义属性attrself.attr点号运算触发无限循环。 示例 class LoopGet:a1def __init__(self):self.b2def __getattr__(self,attr):print(获取属性值,attr)# 未定义属性attrself.attr点号运算触发循环xself.attr lgLoopGet()lg.a 1lg.c 获取属性值 c 获取属性值 attr 获取属性值 attr 获取属性值 attr 获取属性值 attr # 未定义属性attr实例名.attr点号运算触发循环1.1.2 访问已定义属性避免循环 描述 __getattr__拦截未定义属性的点号运算方法体内self.已定义属性拦截已定义属性来避免循环或者直接return其他值来避免循环。 示例 class LoopGet:a1def __init__(self):self.b2def __getattr__(self,attr):print(获取属性值,attr)# 已定义属性attrself.attr点号运算不调用 __getattr__ 避免循环xself.a lgLoopGet()lg.c 获取属性值 c1.2 getattribute 未定义属性、已定义属性attr进行点号运算-实例名.attr时都会自动调用__getattribute__()方法所以在方法体通过self.属性对其他属性进行点号运算时会触发__getattribute__()导致产生循环。通过object.__getattribute__()避免无限循环。 1.2.1 self.attr触发无限循环 描述 getattribute方法体内self.属性名自动调用当前实例的getattribute导致无限循环。 示例 class LoopGet:a1def __init__(self):self.b2def __getattribute__(self,attr):print(获取属性值,attr)# 已定义属性attrself.attr点号运算触发循环xself.blgLoopGet()lg.a 获取属性值 a 获取属性值 b 获取属性值 b 获取属性值 b #无限循环获取属性 b class LoopGet:a1def __init__(self):self.b2def __getattribute__(self,attr):print(获取属性值,attr)# 未定义属性attrself.attr点号运算触发循环xself.attr lgLoopGet()lg.a 获取属性值 a 获取属性值 attr 获取属性值 attr 获取属性值 attr #无限循环获取属性 attr1.2.2 self.__dict__触发无限循环 描述 getattribute方法体内self.__dict__自动调用当前实例的getattribute导致无限循环。 示例 class LoopGet:a1def __init__(self):self.b2def __getattribute__(self,attr):print(获取属性值,attr)# self.__dict__ 触发 __getattribute__ 导致循环xself.__dict__[attr] lgLoopGet()lg.a 获取属性值 a 获取属性值 __dict__ 获取属性值 __dict__1.2.3 object.getattribute()避免循环 描述 getattribute方法体内object.__getattribute__(self,attr)自动调用超类object的getattribute避免无限循环。 示例 class LoopGet:a1def __init__(self):self.b2def __getattribute__(self,attr):print(获取属性值,attr)# object全部类的超类通过 object.__getattribute__ 避免循环return object.__getattribute__(self,attr) lgLoopGet()lg.a 获取属性值 a 1lg.c 获取属性值 c Traceback (most recent call last):File pyshell#19, line 1, in modulelg.cFile pyshell#16, line 8, in __getattribute__return object.__getattribute__(self,attr) AttributeError: LoopGet object has no attribute c1.3 setattr 未定义属性或已定义类属性或已定义实例属性为attr实例名.attrvalue自动调用python的__setattr__()方法。在setattr方法体内self.attrvalue自动调用当前实例的setattr导致无限循环。通过self.__dict__[attr]value、object.__setattr__(self,attr,value)来避免无限循环。 __delattr__()和__setattr__()使用相同的方法来避免循环。 1.3.1 self.attrvalue触发无限循环 描述 setattr方法体内self.attrvalue自动调用当前实例的setattr导致无限循环。 示例 class LoopGet:a1def __init__(self):self.b2def __setattr__(self,attr,value):print(设置属性值,attr)# self.attr 触发 __getattribute__ 导致循环self.attrvalue# 构造函数的 self.b2 调用 setattr方法体内 self.attrvalue 触发无限循环 lgLoopGet() 设置属性值 b 设置属性值 attr 设置属性值 attr 设置属性值 attr1.3.2 self.dict[attr]value避免循环 描述 __setattr__()方法体内self.__dict__[attr]value不调用setattr避免循环。 示例 class LoopGet:a1def __init__(self):self.b2def __setattr__(self,attr,value):print(设置属性值,attr)# self.__dict__[attr]value 不调用 __getattribute__ 避免循环self.__dict__[attr]value lgLoopGet() 设置属性值 blg.a11 设置属性值 alg.b3 设置属性值 blg.c5 设置属性值 clg.c 51.3.3 object.setattr(self,attr,value)避免循环 描述 __setattr__()方法体内object.__setattr__(self,attr,value)自动调用超类object的setattr避免无限循环。 示例 class LoopGet:a1def __init__(self):self.b2def __setattr__(self,attr,value):print(设置属性值,attr)# object.__setattr__(self,attr,value) 调用超类setattr 避免循环object.__setattr__(self,attr,value) lgLoopGet() 设置属性值 blg.a11 设置属性值 alg.b3 设置属性值 blg.c5 设置属性值 clg.c 51.4 delattr del 实例名.attr自动调用python的__delattr__()方法。在setattr方法体内del self.attr自动调用当前实例的delattr导致无限循环。 通过del self.__dict__[attr]、object.__delattr__(self,attr)来避免无限循环。 注只能删实例属性不能删类属性。 1.4.1 del self.attr触发无限循环 描述 __delattr__()方法体内del self.attr自动调用当前实例的delattr导致无限循环。 示例 class LoopDel:a1def __init__(self):self.b2def __delattr__(self,attr):print(删除属性,attr)# del self.attr 调用当前实例的 delattr 导致循环del self.attr ldLoopDel()del ld.a 删除属性 a 删除属性 attr 删除属性 attr 删除属性 attr 删除属性 attr1.4.2 del self.dict[attr]避免循环 描述 __delattr__()方法体内del self.__dict__[attr]不调用delattr避免循环。 注只能删实例属性不能删类属性。 示例 class LoopDel:a1def __init__(self):self.b2def __delattr__(self,attr):print(删除属性,attr)# del self.__dict__[attr] 不调用 delattr 避免循环# 只能删 实例属性 不能删类属性del self.__dict__[attr] ldLoopDel() # 删实例属性del ld.b 删除属性 b # 删类属性失败del ld.a 删除属性 a Traceback (most recent call last):File pyshell#64, line 1, in moduledel ld.aFile pyshell#60, line 9, in __delattr__del self.__dict__[attr] KeyError: a1.4.3 object.__delattr(self,attr)避免循环 描述 __delattr__()方法体内object.__delattr__(self,attr)自动调用超类object的delattr避免无限循环。 注只能删实例属性不能删类属性。 示例 class LoopDel:a1def __init__(self):self.b2def __delattr__(self,attr):print(删除属性,attr)# object.__delattr__(self,attr) 调用超类 delattr 避免循环# 只能删 实例属性 不能删类属性object.__delattr__(self,attr) ldLoopDel()del ld.b 删除属性 bdel ld.a 删除属性 a Traceback (most recent call last):File pyshell#69, line 1, in moduledel ld.aFile pyshell#66, line 8, in __delattr__object.__delattr__(self,attr) AttributeError: a
http://www.zqtcl.cn/news/888068/

相关文章:

  • wordpress模板站如何安装wordpress 查询语句
  • 给窗帘做网站淄博周村学校网站建设公司
  • 关于志愿者网站开发的论文做什么网站开发好
  • 做电影网站如何规避版权做新年公告图片的网站
  • 网站修改后怎么上传济南网络员
  • 家居seo整站优化方案怎样开平台软件
  • 深圳网站关键词网站做视频转流量
  • 做网站如何配置自己的电脑精准防恶意点击软件
  • 单页网站 挣钱深圳高水平网站制作
  • 网站建设哪几家好一些打开浏览器历史记录
  • 公司里面有人员增减要去哪个网站做登记网页开发报价单
  • 网站设计的公司运营接单百度搜索引擎首页
  • 最专业的做网站公司有哪些成都龙泉建设有限公司网站
  • 云南省玉溪市建设局官方网站wordpress 迁移 空白
  • 网站空间和数据库多个织梦dedecms网站怎么做站群
  • 网站模块插件是怎么做的个人建设网站流程图
  • 作品展示的网站建设网站方案
  • 整站优化哪家专业网站漏洞解决办法
  • 怎么给自己的网站做扫描码南宁seo排名外包
  • 网站的服务器在哪里怎么建设网站啊
  • 山东做网站三五网站备案怎样提交到管局
  • 自己如何做网站教程中山企业网站推广公司
  • 网站每年费用本地同城服务平台
  • 暗网网站有那些青岛网站设计公司推荐
  • 营业执照咋做网等网站遂宁网站建设公司哪家好
  • 湖南平台网站建设找哪家重庆网站建设营销
  • wordpress搭建企业网站小型网络架构
  • 淘宝联盟链接的网站怎么做培训网站排名
  • 上海高端网站建设定制大连开发区邮编
  • 手机网站公司免费crm软件下载