Python 动态设置属性

本贴最后更新于 371 天前,其中的信息可能已经时移世改

实践是检验真理的唯一标准:拷贝到pycharm试一下

动态设置属性

用作接口自动化的 # 全局变量 参数传递 参数化

1、设置属性
setattr(object,key,value)

2、获取属性
getattr(object,key,"属性不存在的时候返回的值,避免报错")

3、删除属性
delattr(object,key)

4、属性检查是否存在
hasattr(object,key)

实例操作
类操作


from pprint import pprint


# 全局变量   参数传递   参数化
class TestDemo:
    def __init__(self):
        self.name = "小明"

    def test_01(self):
        print("这里是test01")
        print('self.__dict__:', self.__dict__)
        # 4、属性检查是否存在
        if hasattr(self, "age"):
            print('这里是hasattr(self, "age")')
            age = getattr(self, "age", "getattr获取属性不存在")
            print('age:', age)
        else:
            print("通过hasattr判断age属性不存在")


if __name__ == '__main__':
    """ 实例属性,通过实例操作 """
    cl = TestDemo()

    print('实例 hasattr getattr =============================================')
    cl.test_01()
    # 这里是test01
    # self.__dict__: {'name': '小明'}
    # 通过hasattr判断age属性不存在

    print('实例 setattr =============================================')
    setattr(cl, "age", "20")
    cl.test_01()
    # 这里是test01
    # self.__dict__: {'name': '小明', 'age': '20'}
    # age: 20

    print('实例delattr=============================================')
    delattr(cl, "age")
    cl.test_01()
    # 这里是test01
    # self.__dict__: {'name': '小明'}
    # 通过hasattr判断age属性不存在

    """ 类属性, 通过类操作"""
    print('类 setattr前所有属性 =============================================')
    pprint(TestDemo.__dict__)
    # mappingproxy({'__dict__': <attribute '__dict__' of 'TestDemo' objects>,
    #               '__doc__': None,
    #               '__init__': <function TestDemo.__init__ at 0x00000203053158A0>,
    #               '__module__': '__main__',
    #               '__weakref__': <attribute '__weakref__' of 'TestDemo' objects>,
    #               'test_01': <function TestDemo.test_01 at 0x00000203055C05E0>})

    print('类 setattr 后所有属性 =============================================')
    setattr(TestDemo, "address", "斗罗大陆")
    pprint(TestDemo.__dict__)
    # mappingproxy({'__dict__': <attribute '__dict__' of 'TestDemo' objects>,
    #               '__doc__': None,
    #               '__init__': <function TestDemo.__init__ at 0x000002B81FA458A0>,
    #               '__module__': '__main__',
    #               '__weakref__': <attribute '__weakref__' of 'TestDemo' objects>,
    #               'address': '斗罗大陆',
    #               'test_01': <function TestDemo.test_01 at 0x000002B81FC805E0>})

    print('类 getattr=============================================')
    print(getattr(TestDemo, "address"))
    print(getattr(TestDemo, "address666", "getattr获取address666属性不存在"))
    # 斗罗大陆
    # getattr获取address666属性不存在
  
1 操作
qq5942527 在 2023-04-17 18:56:55 更新了该帖
回帖
请输入回帖内容 ...