Python基础---面向对象类的常用函数

目录

 

1.issubclass()

概念

练习

2.isinstance()

概念

练习

3.反射方法

getattr()

hasattr()

setattr()

delattr()

反射导入模块中的属性、函数、类

反射自己模块中的属性和函数

反射内置模块


1.issubclass()

概念

检测一个类是否是另外一个类的子类

格式1:issubclass(被检测类,父类)

返回值:布尔值

格式1:issubclass(被检测类,(父类1,父类2,父类3...))

返回值:布尔值

注意:只要有一个类是当前被检测类的父类,那么最终结果就是True

练习

2.isinstance()

概念

检测一个对象是否是某个类的对象

格式1:isinstance(对象,类)

返回值:布尔值

格式2:isinstance(对象,(类1,类2,类3...))

返回值:布尔值

注意:只要一个类是当前对象的类,那么最终结果就是True

练习

3.反射方法

python面向对象中的反射:通过字符串的形式操作对象相关的属性

python中的一切事物都是对象(都可以使用反射)

四个反射相关的函数

-hasattr :判断是否有此变量,返回bool 值

-getattr : 获取属性值或者获取方法变量的地址

-setattr :给类或者对象设置属性或者方法 (用的场合很少,了解即可)

-delattr:  删除类或者对象的属性或方法(用的场合很少,了解即可)

getattr()

获取对象/类中的成员值

格式:getattr(对象,'属性名'[,成员不存在时的默认值])

返回值:成员的值

练习1

获取静态方法和类方法

结果

练习2

获取对象的属性值和普通方法

hasattr()

检测对象/类是否具有某个成员

格式:hasattr(对象/类,'成员名')

返回值:布尔值

练习1

判断类中是否有dict1静态属性

练习2

根据用户输入的key来调用对应的方法

setattr()

设置或者添加对象/类中的成员

格式:setattr(对象,'成员名',值)

返回值:None

练习1

给A类添加静态age属性

练习2

给A类的对象添加name属性

delattr()

删除对象/类中的成员

格式: delattr(对象,成员)

返回值:None

练习1

删除a对象的name属性

练习2

删除 A类的age属性

反射导入模块中的属性、函数、类

第一个参数是模块名称,第二个参数是变量名称

练习1

反射test模块中的属性、函数和类

test.py

demo.py

结果

练习2

反射带参数的函数

反射自己模块中的属性和函数

借助sys模块获取当前模块的名称。

练习1

查看当前的所有模块

练习2

反射当前模块中的name变量

练习3

反射当前模块中的函数

注意事项:如果本模块作为导入模块 模块的名称就不是 __main__了,因此使用 __name__属性动态获取

fun = getattr(sys.modules[__name__], 'func')

fun()

反射内置模块

用法和反射导入模块相同

练习1

反射time模块中的time()函数

猜你喜欢

转载自blog.csdn.net/weixin_44239385/article/details/86531574