哈喽,大家过年好,小沐子回来啦!(大家有没有想我,哈哈哈)今天继续python的学习,内容是面向对象高级,内容不难,主要是要写代码,那话不多说我们开始吧。
今天有三个主要内容:属性访问函数、内置方法操作属性以及属性的调用过程
属性访问函数是内置函数,都是操作实例对象的属性
hasattr(实例对象,'属性'),作用是判断该实例对象是否存在该属性。返回值是布尔类型
getattr(实例对象,'属性'),作用是获取该实例对象的指定属性值。返回值是属性值。没有找到会报错
setattr(实例对象,'属性','属性值'),作用是设置该实例对象的属性值,包括增加和修改。有就修改没有就增加。无返回值
delattr(实例对象,'属性'),作用是删除该实例对象的属性,无返回值。
补充一个三目运算的简写:写法:c= a if a>b else b
内置方法操作属性是通过方法操作实例对象的属性
对象.__getattribute__('属性'),作用是获取该实例对象的指定属性值。返回值是属性值。没有找到会报错
对象.__setattr__('属性','属性值'),作用是设置该实例对象的属性值,包括增加和修改。有就修改没有就增加。无返回值
对象.__delattr__('属性'),作用是删除该实例对象的属性,无返回值。
大家有没有发现内置方法操作属性相比内置函数缺少一个判断。那接下来我们就引入属性调用过程,了解一下内置方法怎么判断的。
属性调用过程:判断是python自身完成的。
第一步:判断是否有属性
第二步:有属性,通过对象.__getattribute__('属性')带出返回值,没有属性,通过对象.__getattr__('属性')判断类是否定义此方法
第三步:类定义此方法,执行定义的方法,类没有定义就会报错。
所以我们判断属性在类里面定义__getattr__即可。
这就是今天全部内容。也不是很难理解。写写代码熟悉熟悉就会用了。大家有什么不明白可以发在讨论区,我看到会回复的,希望大家积极发言,带动学习气氛。
如若转载,请注明出处:https://www.ozabc.com/keji/404878.html