Python的getattr()函数可以用中文解释为:获取对象属性的值

在我们之前的教程中,我们学习了关于Python系统命令的内容。在这个教程中,我们将讨论Python的getattr()函数。

Python的getattr()函数。

Python的getattr()函数用于获取对象属性的值,如果没有找到该对象的属性,则返回默认值。基本上,返回默认值是您可能需要使用Python的getattr()函数的主要原因。因此,在开始教程之前,让我们先看一下Python的getattr()函数的基本语法。

getattr(object_name, attribute_name[, default_value])

Python getattr() 示例

在本部分中,我们将学习如何使用getattr()函数访问对象的属性值。假设我们正在编写名为Student的类。Student类的基本属性是student_id和student_name。现在我们将创建一个类Student的对象并访问其属性。

class Student:
    student_id=""
    student_name=""

    # initial constructor to set the values
    def __init__(self):
        self.student_id = "101"
        self.student_name = "Adam Lam"

student = Student()
# get attribute values by using getattr() function
print('\ngetattr : name of the student is =', getattr(student, "student_name"))

# but you could access this like this
print('traditional: name of the student is =', student.student_name)
python getattr example

Python getattr() 函数的默认值

在本节中,我们将使用Python的getattr()默认值选项。如果您想访问不属于对象的任何属性,那么可以使用getattr()默认值选项。例如,如果学生对象中不存在student_cgpa属性,那么将显示一个默认值。在下面的示例中,我们将看到默认值的示例。我们还将了解如果属性不存在且未使用默认值选项会发生什么。

class Student:
    student_id=""
    student_name=""

    # initial constructor to set the values
    def __init__(self):
        self.student_id = "101"
        self.student_name = "Adam Lam"

student = Student()
# using default value option
print('Using default value : Cgpa of the student is =', getattr(student, "student_cgpa", 3.00))
# without using default value
try:
    print('Without default value : Cgpa of the student is =', getattr(student, "student_cgpa"))
except AttributeError:
    print("Attribute is not found :(")

所以,运行代码后,你会得到这样的输出

Using default value : Cgpa of the student is = 3.0
Attribute is not found :(

当调用getattr()函数时,如果没有提供默认值,则会引发AttributeError错误。

使用Python的getattr()函数的原因

使用Python的getattr()的主要原因是我们可以通过属性名作为字符串来获取值。因此,您可以从控制台手动输入属性名到您的程序中。同样,如果找不到属性,则可以设置一些默认值,这使我们能够完成我们的一些不完整的数据。此外,如果您的Student类还在进行中,我们可以使用getattr()函数来完成其他代码。一旦Student类具有该属性,它将自动获取它,而不使用默认值。所以,这就是关于Python getattr()函数的全部内容。如果您对此有任何疑问,请在下面使用评论框留言。参考:官方文档

发表回复 0

Your email address will not be published. Required fields are marked *


广告
将在 10 秒后关闭
bannerAds