python轻松入门-18面向对象高级(上)

哈喽,大家过年好,小沐子回来啦!(大家有没有想我,哈哈哈)今天继续python的学习,内容是面向对象高级,内容不难,主要是要写代码,那话不多说我们开始吧。

今天有三个主要内容:属性访问函数、内置方法操作属性以及属性的调用过程

属性访问函数是内置函数,都是操作实例对象的属性

hasattr(实例对象,’属性’),作用是判断该实例对象是否存在该属性。返回值是布尔类型

getattr(实例对象,’属性’),作用是获取该实例对象的指定属性值。返回值是属性值。没有找到会报错

setattr(实例对象,’属性’,’属性值’),作用是设置该实例对象的属性值,包括增加和修改。有就修改没有就增加。无返回值

delattr(实例对象,’属性’),作用是删除该实例对象的属性,无返回值。

补充一个三目运算的简写:写法:c= a if a>b else b

内置方法操作属性是通过方法操作实例对象的属性

对象.__getattribute__(‘属性’),作用是获取该实例对象的指定属性值。返回值是属性值。没有找到会报错

对象.__setattr__(‘属性’,’属性值’),作用是设置该实例对象的属性值,包括增加和修改。有就修改没有就增加。无返回值

对象.__delattr__(‘属性’),作用是删除该实例对象的属性,无返回值。

大家有没有发现内置方法操作属性相比内置函数缺少一个判断。那接下来我们就引入属性调用过程,了解一下内置方法怎么判断的。

属性调用过程:判断是python自身完成的。

第一步:判断是否有属性

第二步:有属性,通过对象.__getattribute__(‘属性’)带出返回值,没有属性,通过对象.__getattr__(‘属性’)判断类是否定义此方法

第三步:类定义此方法,执行定义的方法,类没有定义就会报错。

所以我们判断属性在类里面定义__getattr__即可。

这就是今天全部内容。也不是很难理解。写写代码熟悉熟悉就会用了。大家有什么不明白可以发在讨论区,我看到会回复的,希望大家积极发言,带动学习气氛。

ozabc