Python高级 - 反射
反射方法 getattr、hasattr、setattr、delattr
命名空间.xxx == getattr(命名空间, "xxx")
类
1 #类 - 静态属性、类方法、静态方法
2 class Student: 3 ROLE = "STUDENT" 4 5 @classmethod 6 def check(cls): 7 print("查看课程") 8 9 @staticmethod 10 def login(): 11 print("登录") 12 13 print(getattr(Student, 'ROLE')) # 反射查看类属性 14 15 print(getattr(Student, 'check')) # 反射查看类方法 16 getattr(Student, 'check')() 17 18 getattr(Student, 'login')() # 反射查看类静态方法 19 20 hasattr(Student, 'login')
对象
1 # 对象 - 属性、方法 2 class Student: 3 def __init__(self, name): 4 self.name = name 5 6 def eat(self): 7 print("%s吃饭..." % self.name) 8 9 alex = Student("大帅逼") 10 print(getattr(alex, 'name')) # 反射查看对象属性 11 getattr(alex, 'eat')() # 反射查看对象方法
反射自己模块中的内容
1 # 反射自己模块中的内容,找到自己当前文件所在的命名空间 2 import sys 3 # sys.modules 这个方法,表示是所有在当前这个python程序中导入的模块 4 def func(): 5 print("func") 6 sys.modules['__main__'].func() 7 getattr(sys.modules['__main__'], 'func')()
1 class Person: 2 def __init__(self, name): 3 self.name = name 4 alex = Person("alex") 5 setattr(alex, "name", "alex_sb") # setattr 6 delattr(alex, "name") # deleteattr