定义
- 通过字符串类型的变量名获取变量的值
- 只要是 x.y 格式的都可以用反射
hasattr
getattr - 获取反射
- 类名.静态属性
class Foo:
x = 1
if hasattr(Foo, 'x')
getattr(Foo, 'x')
- 对象名.静态属性
class Foo:
def __init__(self, name):
self.name = name
egon = Foo('egon')
if hasattr(egon, 'name'):
getattr(egon, 'name')
- 模块.函数
import module_name
if hasattr(module_name, "func_name")
r = getattr(moudule_name, "func_name")
r()
import sys
def func_a(num):
print(num)
my_module_name = sys.modules[__name__]
if hasattr(my_module_name, "func_a")
r = getattr(my_module_name, "func_a")
r(10)
delattr - 删除属性
class Stu:
def __init__(self, name, age):
self.name = name
self.age = age
stu1 = Stu("Tom", 18)
print(stu1.__dict__)
if hasattr(stu1, "age"):
delattr(stu1, "age")
print(stu1.__dict__)
setattr - 修改属性
class Stu:
def __init__(self, name, age):
self.name = name
self.age = age
stu1 = Stu("Tom", 18)
print(stu1.__dict__)
if hasattr(stu1, "age"):
setattr(stu1, "age", 20)
print(stu1.__dict__)