Python 内建函数 - setattr(object, name, value)

本文详细介绍了Python中setattr()函数的功能及使用方法,并通过实例演示了如何利用setattr()为对象设置属性值,包括修改现有属性和创建新属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Manual

This is the counterpart of getattr(). The arguments are an object, a string and an arbitrary value. The string may name an existing attribute or a new attribute. The function assigns the value to the attribute, provided the object allows it. For example, setattr(x, ‘foobar’, 123) is equivalent to x.foobar = 123.

直译

该函数与getattr()相匹配,参数分别是一个对象、字符串和任意值。name字符串用来命名一个已存在的属性或一个新的属性,函数将value分配给属性,提供的object接受它。例如:setattr(x, ‘foobar’, 123)等同于x.foobar = 123。

实例

>>> class 优快云:
    def __init__(self):
        self.foobar = '优快云er'

>>> a = 优快云()
>>> a.foobar
'优快云er'

>>> setattr(a, 'foobar', 'Hello')
>>> a.foobar
'Hello'

>>> setattr(a, 'foo', 'world!')
>>> a.foo
'world!'

拓展阅读

getattr()

### Python 内建类 `object` 的方法列表 Python 中所有的类都继承自基类 `object`。这个基础类提供了一些默认的方法和属性,这些对于所有对象都是可用的。 #### 默认方法 - `__new__()`: 创建并返回一个新的对象实例。此方法是一个静态方法,在调用构造函数时被自动触发[^1]。 - `__init__(self[, ...])`: 初始化新创建的对象。当一个对象被创建之后会立即调用该初始化方法来完成一些必要的设置工作。 - `__str__(self)` 和 `__repr__(self)`: 这两个特殊方法用于定义如何将对象转换成字符串表示形式。前者通常用来生成更易读取的人类友好型描述;后者则倾向于给出可以重现对象状态的信息。 - `__eq__(self, other), __ne__(self, other), __lt__(self, other)...`: 实现比较运算符的行为,比如等于 (`==`)、不等于(`!=`) 或小于(`<`)等操作符的支持。 - `__hash__(self)`: 如果实现了哈希算法,则允许对象作为字典键或集合成员使用。如果未实现或者返回的是 None 值,则意味着此类不可散列化。 - `__getattr__(self, name), __setattr__(self, name, value), __delattr__(self, name)` : 控制访问不存在/存在属性的方式以及删除已有属性的操作逻辑。 下面是一些例子展示部分内置方法: ```python class Example(object): pass example_instance = Example() print(example_instance.__str__()) # 调用了 __str__ print(repr(example_instance)) # 调用了 __repr__ try: iter([]).__next__() except StopIteration as e: print("Caught expected exception:", str(e)) ``` 为了查看特定类型的全部可访问属性(包括来自父类),可以利用 `dir()` 函数获取完整的属性名称列表: ```python number_list = [1, 2, 3] print(dir(number_list)) person_obj = Person() print(dir(person_obj)) ``` 上述代码片段展示了怎样通过 `dir()` 来列举给定对象的所有公共与私有属性及方法[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值