📜  Python getattr()(1)

📅  最后修改于: 2023-12-03 14:45:58.315000             🧑  作者: Mango


Python中的getattr()函数

在Python中,getattr()函数是一个内置函数,它可以用来从一个对象中获取属性的值,如果对象没有这个属性,可以指定默认值或者抛出一个异常。它的常用语法如下:

getattr(object, name[, default])

其中,

  • object:表示要获取属性的对象,可以是类、实例或者模块;
  • name:表示要获取的属性名,如果对象中没有这个属性,可以指定默认值;
  • default:可选参数,当对象中没有指定的属性时,返回默认值。

如果对象中没有指定的属性且没有指定默认值,getattr()函数将会抛出AttributeError异常。

下面我们通过一些示例来演示getattr()函数的用法。

示例1

在这个示例中,我们使用getattr()函数来获取Python内置的字符串模块(string)的属性ascii_letters。

import string
print(getattr(string, 'ascii_letters'))

输出:

abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
示例2

在这个示例中,我们通过getattr()函数来获取类的属性。我们先定义一个类Person,它有name和age两个属性:

class Person:
    name = 'John'
    age = 30

接下来,我们就可以通过getattr()函数来获取这个类的属性了:

print(getattr(Person, 'name'))
print(getattr(Person, 'age'))

输出:

John
30
示例3

在这个示例中,我们使用getattr()函数来获取实例对象的属性。我们创建一个Person的实例对象:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

p = Person('John', 30)

然后,我们就可以通过getattr()函数来获取这个实例对象的属性了:

print(getattr(p, 'name'))
print(getattr(p, 'age'))

输出:

John
30
示例4

在这个示例中,我们通过getattr()函数来获取一个不存在的属性。由于我们没有指定默认值,在这个例子中,getattr()函数将会抛出AttributeError异常:

class Person:
    name = 'John'
    age = 30

try:
    print(getattr(Person, 'address'))
except AttributeError:
    print("属性不存在!")

输出:

属性不存在!
示例5

在这个示例中,我们通过getattr()函数来获取一个不存在的属性,并指定了一个默认值。这样,当这个属性不存在时,将会返回这个默认值:

class Person:
    name = 'John'
    age = 30

print(getattr(Person, 'address', '暂无地址信息'))

输出:

暂无地址信息

以上就是getattr()函数的一些基本用法。它在Python开发中非常有用,可以帮助我们从一个对象中获取属性的值,简化代码编写。