python getattr函数
2025-05-16 11:07
网友投稿
`getattr()` 是 Python 中的一个内置函数,用于获取对象的属性值。如果指定的属性存在,则返回该属性的值;否则,引发 `AttributeError` 异常。
基本语法如下:
```python
getattr(object, attribute_name)
```
这里 `object` 是你想查询的实例对象,`attribute_name` 是你想要获取的属性名。注意这是一个字符串类型。这个函数尝试在对象上获取指定属性的值。如果该属性存在,则返回该属性的值;如果不存在,会引发 `AttributeError` 异常。你可以通过提供一个默认值作为第三个参数来避免这种异常。如果属性不存在,则返回默认值而不是引发异常。例如:
```python
class MyClass:
def __init__(self):
self.my_attribute = "Hello World"
obj = MyClass()
print(getattr(obj, 'my_attribute')) # 输出 "Hello World"
print(getattr(obj, 'non_existent_attribute', 'Default Value')) # 输出 "Default Value",因为没有名为 'non_existent_attribute' 的属性
```
需要注意的是,当你试图访问不存在的属性时,如果传递的默认值被设置为一个对象或一个可调用的函数,它将根据参数和期望的行为被调用或返回。例如:
```python
class Default:
def __str__(self):
return 'default instance' # 在被调用时返回一个字符串
obj = Default() # obj 现在是一个默认的实例对象。但是并不具备其他任何属性。默认构造函数不会赋予任何额外的属性给对象本身。因此我们试图获取一个不存在的属性时就会抛出 AttributeError 异常。所以我们需要使用 getattr 函数来处理这种情况。我们调用 getattr 函数获取一个不存在的属性时,会返回默认实例对象本身而不是抛出异常。因此我们可以这样写代码:print(getattr(obj, 'non_existent_attribute', obj)),这样的话当我们尝试访问一个不存在的属性时,我们仍然能够获得这个默认的实例对象自身(或者基于需要做一些额外的处理)。这就是使用 getattr 函数的一个非常有用的地方。
声明:该内容系网友自行发布,所阐述观点不代表本网(威客牛)观点,如若侵权请联系威客牛删除。