反射:通过字符串获取变量 有四种方法 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