1.动态属性访问
class TestClass:
def __init__(self):
self.name1 = 'test1'
self.name2 = 'test122'
obj = TestClass()
test_name = 'name1'
print(getattr(obj, test_name)) # 输出: test1 //获取属性名称为name1的值
setattr(obj, test_name, 'new_test123')//重新设置属性名称名称为name1的值
print(getattr(obj, test_name)) # 输出: new_test123
2.动态方法调用
drg源码的实现方式类似这种方式
class Animal(object):
def __init__(self, name, age, init_func_str):
self.name = name
self.age = age
func = getattr(self, init_func_str)
func()
def sleep(self):
print("sleeping...")
class Dog(Animal):
def wangwang(self):
print("旺旺叫")
def sleep(self):
print("仰天睡...")
d = Dog("alex", 23, "sleep")