python基础知识之面向对象进阶 反射
2021/11/17 9:09:54
本文主要是介绍python基础知识之面向对象进阶 反射,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
反射:通过字符串获取变量 有四种方法 hasattr getattr (setattr delattr)不是那么重要
反射之hasattr 方法判断该类是否存在对应字符串变量
反射之getattr与hasattr 夫妻档 用hasatrr判断是否存在 在用getattr反射获取值
# class A: age=12 def func(self): print("in func") @classmethod #类方法 def func1(cls): print("in func1") @staticmethod #类方法:静态方法 def func2(): print("in func2") #反射对象属性 a=A() a.name="alex" #给对象添加属性 也可以在类里面自定义属性 一个道理 if hasattr(a,"name"):# 判断是否存在那么这个属性 print(getattr(a,"name")) # 反射对象方法 if hasattr(a,"func"): getattr(a,"func")() # 反射类属性 if hasattr(A ,"age"): print(getattr(A, "age")) # 反射类方法 类方法:加有classmethod staticmethod装饰器的方法 if hasattr(A,"func1")and hasattr(A,"func2"): getattr(A,"func1")() # getattr(A, "func2")() # 反射模块 import MyModle #自定义模块 print(getattr(MyModle,"year")) #反射模块属性 getattr(MyModle,"myfunc")() #反射模块方法 # 反射自己类中的方法 属性 age=12 def myage(): print(" int myage") import sys print(getattr(sys.modules[__name__],"age")) getattr(sys.modules[__name__],"myage") # 反射内置模块 import time print(getattr(time,"time")()) print(getattr(time,"asctime")()) print(getattr(time,"strftime")("%Y-%m-%d %H-%M-%S"))#内置有参数一样传参 #反射模块中 类的属性 方法 import MyModle print(getattr(getattr(MyModle,"C")(),"modeke")) getattr(getattr(MyModle,"C")(),"myC")()View Code
这篇关于python基础知识之面向对象进阶 反射的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-08有遇到过吗?同样的规则 Excel 中 比Python 结果大
- 2024-03-30开始python成长之路
- 2024-03-29python optparse
- 2024-03-29python map 函数
- 2024-03-20invalid format specifier python
- 2024-03-18pool.map python
- 2024-03-18threads in python
- 2024-03-14python Ai 应用开发基础训练,字符串,字典,文件
- 2024-03-13id3 algorithm python
- 2024-03-13sum array elements python