python中setattr()函数用法详解
Python 详解 函数 用法
2023-09-11 14:15:15 时间
setattr() 函数对应函数 getattr(),用于设置属性值,该属性不一定是存在的。
getattr()用法详见博文:python中getattr()函数用法详解_IT之一小佬的博客-CSDN博客
setattr() 函数源码:
def setattr(x, y, v): # real signature unknown; restored from __doc__
"""
Sets the named attribute on the given object to the specified value.
setattr(x, 'y', v) is equivalent to ``x.y = v''
"""
pass
语法结构:
setattr(object, name, value)
- object -- 对象。
- name -- 字符串,对象属性。
- value -- 属性值。
- return None
示例代码1: 【类中属性值存在的情况】
class Test(object):
test = 1
print(Test.test)
print(Test().test)
obj = Test()
ret = getattr(obj, 'test') # 获取属性 test 值
print(ret)
setattr(obj, 'test', 5) # 设置属性 test 值
print(obj.test)
运行结果:
示例代码2: 【类中属性值不存在的情况】
class Test(object):
test = 1
obj = Test()
setattr(obj, 'age', 5) # 设置属性 age 值
print(obj.age)
运行结果:
示例代码3: 【setattr和getattr共同使用,嵌套数据结构类型】
class Struct(object):
def __init__(self, data):
for name, value in data.items():
setattr(self, name, self._wrap(value))
def _wrap(self, value):
if isinstance(value, (tuple, list, set, frozenset)):
return type(value)([self._wrap(v) for v in value])
else:
return Struct(value) if isinstance(value, dict) else value
d = {'a': 1, 'b': {'c': 2}, 'd': ["AA", {'BB': "CC"}]}
x = Struct(d)
print(x)
setattr(x, "XX", {})
print(x.__dict__)
print(type(x))
setattr(getattr(x, 'b'), 'cc', {'name': 'dgw'})
setattr(getattr(x, 'b'), 'ccc', [1, 2, 3])
print(x.__dict__)
print(x.b.c)
print(x.b.cc)
print(x.b.ccc)
运行结果:
相关文章
- python中locals函数用法详解
- python内置函数callable用法详解
- python中tldextract用法详解
- python内置函数next()方法用法详解
- python中namedtuple函数用法详解
- 详解Python-Numpy库的函数diagonal()【并附函数diagonal()与函数diag()的区别】
- Python内置函数super()的作用详解【用最简单的例子把函数super()的作用和运行过程说清楚)】
- python time时间处理详解
- python string 详解
- 《精通Python网络爬虫:核心技术、框架与项目实战》——第二篇 Part 2核心技术篇 第3章 网络爬虫实现原理与实现技术 3.1 网络爬虫实现原理详解
- gyp ERR! stack Error: Can‘t find Python executable “python“, you can set the PYTHON env variable.
- Python 的结构体函数 struct pack, unpack 用法详解
- 数据科学必备用Python进行描述性统计数据分析详解
- 【Python基础】我的第一个 python 程序