#!/usr/bin/env python
#-*- coding:utf-8 -*-
"""对比__getattribute__、__getattr__、__getitem__函数的区别"""
class AboutAttr(dict):
def __init__(self, name):
self.name = name
self.dict = {}
def __getattribute__(self, item):
print("in __getattribute__ key:%s"%item)
try:
return super(AboutAttr, self).__getattribute__(item)
except KeyError:
#这里不会触发
print("KeyError:%s"%item)
raise
except AttributeError:
#当属性不存在时
print("AttributeError:%s"%item)
raise
def test(self):
print("test")
def __getattr__(self, item):
#当没有改属性时(即__getattribute__报错时),调用当前函数
print("in __getattr__ key:%s"%item)
#return self.dict[item] #通过hasattr判断不存在的键能正常返回false,也就是报错的时候才返回False
return self.dict.get(item, None) #通过hasattr判断的不存在的也会返回true,
def __getitem__(self, item):
print("in __getitem__ key:%s"%item)
return super(AboutAttr, self).__getitem__(item)
def __setitem__(self, key, value):
#如果基类不是dict之类的对象,则调用super里面的__setitem__会报错
print("in __setitem__ key:%s, value:%s"%(key, value))
return super(AboutAttr, self).__setitem__(key, value)
if __name__=="__main__":
a = AboutAttr("a")
print a.get("name") #对应的调用__getitem__
print a.name
#print a.not_exists
a["t"] = "t"
print a["t"]
print a.test
print a.test()
print getattr(a, "test")
print getattr(a, "name")
print hasattr(a, "nnn")
"""打印结果
in __getattribute__ key:get
None
in __getattribute__ key:name
a
in __setitem__ key:t, value:t
in __getitem__ key:t
t
in __getattribute__ key:test
<bound method AboutAttr.test of {'t': 't'}>
in __getattribute__ key:test
test
None
in __getattribute__ key:test
<bound method AboutAttr.test of {'t': 't'}>
in __getattribute__ key:name
a
in __getattribute__ key:nnn
AttributeError:nnn
in __getattr__ key:nnn
in __getattribute__ key:dict
True
"""相关推荐
ZYNQ实战:如何用AXI-stream FIFO解决跨时钟域数据同步难题(附完整代码)
本文深入探讨了在ZYNQ项目中,如何利用AXI-Stream FIFO有效解决PS与PL之间的跨时钟域数据同步难题。文章详细分析了异步FIFO的架构设计、关键配置参数,并提供了PS端软件策略与PL端逻辑设计的完整代码示例,旨在帮助开发者构建稳定可靠的数据流通道,优化系统性能。
Python----魔法函数__getattr__/__setattr__/__delattr__/__getattribute__的用法
1、__getattr__魔法函数 作用:当调用的对象的属性不存在的时候会触发__getattr__魔法函数,此时可以在此魔法函数做一些定制化处理 如: class Student2(object): def __init__(self, name): self.name = name def __getattr__(self,item): print("no {attr} exist...".format(attr=item)) ret
深入解析Lora模块的工作原理与应用场景
本文深入解析了Lora模块的工作原理与应用场景。Lora模块作为物联网领域的核心无线通信组件,凭借其独特的扩频调制与半双工通信技术,实现了远距离、低功耗的数据传输。文章详细拆解了其技术内核,包括空中唤醒等低功耗奥秘,并提供了地址、信道、空中速率等关键参数的实战配置指南。最后,探讨了Lora模块在智能家居、智慧农业、城市监测等广域物联网场景中的具体应用,为开发者提供了从理论到实践的完整参考。
【python基础 - 04】__getattr__
__getattr__方法常用于以属性的方式调用类中的属性或方法,如MyClass.my_func(). 定义Test类如下: class Test(object): def _my_default(self, *args): print(f'func input {args}') def __getattr__(self, key): print(f'{key} not defined in Test') return self._my_d
用Matlab系统辨识工具箱搞定温控系统建模:从阶跃响应到传递函数(附完整代码)
本文详细介绍了如何使用Matlab系统辨识工具箱进行温控系统建模,从阶跃响应数据采集到传递函数参数辨识的全过程。通过实际案例和完整代码,帮助工程师快速掌握PID控制参数整定技巧,提升温控系统设计效率。特别适合单片机开发者和自动化控制工程师参考。
AI量化交易工作台Vibe-Trading:用自然语言驱动策略回测与多智能体研究
量化交易通过数学模型和计算机程序执行投资决策,其核心在于将市场规律转化为可验证的策略。传统量化开发涉及数据获取、策略编写、回测验证等复杂工程,对非编程背景的从业者构成较高门槛。随着大语言模型技术的发展,自然语言交互正成为降低技术使用难度的关键。Vibe-Trading项目正是这一趋势的实践,它将金融工程任务封装为可调用的工具与技能,允许用户通过自然语言指令直接驱动策略回测、因子研究和投资组合分析。其技术价值在于构建了一个模块化的AI Agent框架,通过ReAct推理框架协调多个专项技能,并创新性地引入多智
Python getattr() 函数
描述 getattr() 函数用于返回一个对象属性值。 语法 getattr(object, name[, default]) 参数 object -- 对象。 name -- 字符串,对象属性。 default -- 默认返回值,如果不提供该参数,在没有对应属性时,将触发 AttributeError。 返回值 返回对象属性值。 实例 以下实例展示了 getattr 的使用方法: >>>class A(object): ... bar = 1 .
【数据清洗】数据清洗流程及经验
预处理阶段 预处理阶段主要做两件事情: 一是将数据导入处理工具。 二是看数据。包含两个部分:一是看元数据,包括字段解释、数据来源、代码表等等一切描述数据的信息;二是抽取一部分数据,对数据本身有一个直观的了解,并且初步发现一些问题,为之后的处理做准备。 第一步:缺失值清洗 四个步骤: 1、确定缺失值范围:对每个字段都计算其缺失值比例,然后按照缺失比例和字段重要性,分别制定策略。 2、去除不需要的...
python 中的__getattr__和__getattribute__方法
python 中的__getattr__和__getattribute__方法的理解
UWB芯片DW3000之PDOA测向实现源码
本文详细介绍如何基于UWB芯片DW3000之PDOA测向的源码实现。
SAP_SD模块_SAP 消息号VF501(科目确定期间出错)
摘要: SAP SD模块中执行VF02销售开票时出现“科目确定期间出错”(VF501)问题,主要原因是系统无法找到匹配的总账科目。解决方案包括:检查物料主数据和客户主数据中的科目分配组是否维护,核对发票中的对应字段,并通过VKOA事务代码分析科目确定逻辑。若定价过程中配置的科目代码(如Z01)未在VKOA中完整映射(如缺少H1+S5+Z01组合),则会导致内部价格无法关联总账科目。需在SPRO路径下完善科目代码分配配置,确保定价类型与科目代码匹配。本文提供了详细的排查步骤和配置方法,帮助解决开票过账错误。
Python __getattr__()函数的应用
Python _getattr__(self, item)函数的应用
学Simulink——基于 Simulink 的 滑模控制(SMC)
本文详细介绍了基于Simulink的Buck变换器滑模控制(SMC)设计与实现方法。首先阐述了传统PI控制在负载突变时的不足,以及滑模控制具有强鲁棒性和快速响应的优势。通过建立Buck变换器的连续状态方程,推导了含积分项的滑模面和控制律,并采用边界层法抑制抖振。文章分步骤讲解了Simulink模型搭建过程,包括主电路、控制器实现和负载扰动模拟模块。仿真结果表明,在负载1A↔5A阶跃时,SMC控制输出电压波动仅0.08V,恢复时间0.35ms,远优于传统PI控制。同时给出了工程实践中的参数选择建议和数字实现技
python __call__(),__get__, __getattr__, __getattribute__等
Python call()方法 ref class CLanguage: # 定义__call__方法 def __call__(self,name,add): print("调用__call__()方法",name,add) clangs = CLanguage() clangs("C语言中文网","http://c.biancheng.net") clangs.__call__("C语言中文网","http://c.biancheng.net") # 同上一行 ## 输出
计算机控制技术及应用
《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。
visio安装包
Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。
Python 一些特别函数 __getitem__ __getattr__
Python 内置的一些函数,通过重载它们,可以定制自己想要的功能。特别说明一下包含 item 类的函数是通过下标[]操作字典的,包含 attr 类函数是通过 . 操作属性的。 class A(object): def __init__(self, *args, **kwargs): print 'call func init' self.item
假人有限元模型
假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用
Python开发【笔记】: __get__和__getattr__和__getattribute__区别
引言: 1.object.__getattr__(self, name) 当一般位置找不到attribute的时候,会调用getattr,返回一个值或AttributeError异常。 2.object.__getattribute__(self, name) 无条件被调用,通过实例访问属性。如果class中定义了__getattr__(),则__getattr__()不会被调...
数学建模模型总结
这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!
Python__getattr__、__setattr__、__delattr__、__getitem__、__setitem__、__getattribute__方法的理解
1. __getattr__(self, item): 在访问对象的item属性的时候,如果对象并没有这个相应的属性,方法,那么将会调用这个方法来处理。。。这里要注意的时,假如一个对象叫fjs, 他有一个属性:fjs.name = "fjs",那么在访问fjs.name的时候因为当前对象有这个属性,那么将不会调用__getattr__()方法,而是直接返回了拥有的name属性了 2. __s...
python中__get__,__getattr__,__getattribute__ __getitem__的区别
python中__get__,__getattr__,__getattribute__的区别
__setattr__, __getattr__, __getattribute__, _ getitem_的用法和区别
一、类实例属性的获取与设置 转载自 转载自 1. __getattribute__ 程序每次访问对象属性时,Python系统都会调用这个特殊的方法,即使属性字典里面已经有了改属性,也依然会触发__getattribute__。 __getattribute__方法下应该避免使用self.attr访问属性,否则会出现无限递归。如要要访问实例属性,应该直接通过super()来做。 2....
python中bytearray和java中byte[]的区别_Python 中几种属性访问的区别
?“Python猫” ,一个值得加星标的公众号花下猫语:Python 中有不少的魔术方法,也就是“双下方法”,以双下划线开头和结尾。有些魔术方法的样子相似,或者用途相近,常常会导致混淆。今天分享的文章介绍了几个属性访问相关的方法,一起看看吧。作者:weapon原文:https://zhuanlan.zhihu.com/p/47006584图 | 《借东西的小人阿莉埃蒂》剧照起步pyth...
魔术方法(一) __getattribute__ VS __getattr__ VS __getitem___
Python 中有三个看上去非常相似的魔法方法: __getattribute__, __getattr__, __getitem___, 就是前面这仨哥们儿了. 不同之处 首先来看看 __ getattribute__ 和 __getattr__, 这俩在一定程度上有先后调用的关系. 简单来说, 在用. 运算符获取某个实例的属性值的时候, Python 解释器会首先调用__getattribut...
python属性和方法的区别_Python中几种属性访问的区别与用法详解
起步在Python中,对于一个对象的属性访问,我们一般采用的是点(.)属性运算符进行操作。例如,有一个类实例对象foo,它有一个name属性,那便可以使用foo.name对此属性进行访问。一般而言,点(.)属性运算符比较直观,也是我们经常碰到的一种属性访问方式。python的提供一系列和属性访问有关的特殊方法: __get__ , __getattr__ , __getattribute__ , ...
python怎么访问属性_Python中几种属性访问的区别与用法详解
起步在Python中,对于一个对象的属性访问,我们一般采用的是点(.)属性运算符进行操作。例如,有一个类实例对象foo,它有一个name属性,那便可以使用foo.name对此属性进行访问。一般而言,点(.)属性运算符比较直观,也是我们经常碰到的一种属性访问方式。python的提供一系列和属性访问有关的特殊方法: __get__ , __getattr__ , __getattribute__ , ...
python属性和方法的区别_Python中几种属性访问的区别
起步python的提供一系列和属性访问有关的特殊方法:__get__, __getattr__, __getattribute__, __getitem__ 。本文阐述它们的区别和用法。属性的访问机制一般情况下,属性访问的默认行为是从对象的字典中获取,并当获取不到时会沿着一定的查找链进行查找。例如 a.x 的查找链就是,从 a.__dict__['x'] ,然后是 type(a).__dict__...
Python高级编程
最近要进面试,要求中要会python,在工作中层使用过python,但并非主流语言,因此对其高级特性并不是很熟悉,因此再次机会详细学习其高级特性,包括面向对象的编程方法、一些特定的操作函数、常用的函数修饰符、异步语句等最新的python3语法。 Python的基础内容在Python核心编程(3.8学习笔记)_zYongheng的博客-优快云博客 一、继承和多态 1. 继承作用和多重继承的执行顺序 class Animal: def __init__(self, name): ..
聊一聊 python __get__, __getattr__,__getatribute__, __getitem__ 用法
聊一聊 python __get__, __getattr__,__getatrribute__ 用法 先上代码 class Examp(object): def __init__(self, username, age): self.username = username self.age = age # 1. “_ getattribute_”...
754



被折叠的 条评论
为什么被折叠?



