python面向对象的Mixins机制和反射
2021/7/15 17:09:10
本文主要是介绍python面向对象的Mixins机制和反射,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Minxins机制
1. 分主类和辅类 继承辅类就有该辅类中的功能, 不影响子类使用 2. 命名方式,以Mixin,able 为结尾, 3. 一般辅类的位置在主类的左边 4.主类功能可以有很多个,辅类可能有一个功能, 一个功能一个辅类,辅类可以有很多个,但主类只能有一个 例如: class Vehicle: # 交通工具 def run(self): pass ..... # class FlyMixin(): class Flyable(): def fly(self): ''' 飞行功能相应的代码 ''' print("I am flying") class CivilAircraft(Fly1able, Flyable, Vehicle): # 民航飞机 pass class Helicopter(Flyable, Vehicle): # 直升飞机 pass class Car(Vehicle): # 汽车并不会飞,但按照上述继承关系,汽车也能飞了 pass
反射
1、什么是反射
指的是在程序运行过程中,动态的获取对象信息
2、为什么用反射
通过字符串操作类属性或者方法
3、如何使用反射
实现反射机制的步骤: 1.先通过dir()方法,查看出某个对象下可以.出哪些属性 print(dir(obj)) 2.可以通过字符串反射到真正的属性上,得到属性值 print(obj.__dict__[dir(obj)[-2]]) 但我们一般不用__开头__结尾的内置方法, 所以实现反射机制会跟下面四个内置函数一起使用: hasattr()#判断对象是否存在,类似与if判断某个属性在不在对象里面 getattr()#获取对象的属性 setattr()#赋值属性操作 delattr()#删除某个属性 上述四个内置函数对类同样适用 3.例子: class Student(): school = 'sh' def func(self): print("func") obj = Student() #x是个字符串,obj.不出字符串 # x = input("请输入学校") # x = 'age' # print(obj."age") print(getattr(obj, 'school1', None)) #属性不存在后面加个None,在的话不需要加None,也可以加存在就调,不存在打印出None print(hasattr(obj, 'school1')) setattr(obj, 'x', 10) print(obj.__dict__) delattr(Student, 'school') print(Student.__dict__) print(obj.__dict__)
这篇关于python面向对象的Mixins机制和反射的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-24Python编程基础详解
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南
- 2024-11-16`PyMuPDF4LLM`:提取PDF数据的神器
- 2024-11-16四种数据科学Web界面框架快速对比:Rio、Reflex、Streamlit和Plotly Dash
- 2024-11-14获取参数学习:Python编程入门教程