专业编程基础技术教程

网站首页 > 基础教程 正文

python中反射的使用

ccvgpt 2024-08-05 12:13:25 基础教程 12 ℃

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.动态方法调用

python中反射的使用

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")

Tags:

最近发表
标签列表