python中getattr()函数用法详解

这篇具有很好参考价值的文章主要介绍了python中getattr()函数用法详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

getattr() 函数用于返回一个对象属性值。

def getattr(object, name, default=None): # known special case of getattr
    """
    getattr(object, name[, default]) -> value
    
    Get a named attribute from an object; getattr(x, 'y') is equivalent to x.y.
    When a default argument is given, it is returned when the attribute doesn't
    exist; without it, an exception is raised in that case.
    """
    pass

getattr()语法结构:

getattr(object, name[, default])
  • object -- 对象。
  • name -- 字符串,对象属性。
  • default -- 默认返回值,如果不提供该参数,在没有对应属性时,将触发 AttributeError。

返回值:返回对象属性值。

示例代码1:

class Test(object):
    x = 1


a = Test()
print(getattr(a, 'x'))  # 获取属性 x 值
print(getattr(a, 'y', 'None'))  # 获取属性 y 值不存在,但设置了默认值
# print(getattr(a, 'y'))    # AttributeError: 'Test' object has no attribute 'y'

print(a.x)  # 效果等同于上面

运行结果:

getattr,python,python,attr

示例代码2:

class Demo(object):
    def __init__(self):
        self.name = '张三'
        self.age = '25'

    def first(self):
        print("这是 first 方法")
        return "one"

    def second(self):
        print("这是 second 方法")


a = Demo()
# 如果a对象中有属性name则打印self.name的值,否则打印'non-existent'
print(getattr(a, 'name', 'non-existent'))
print("*" * 100)

# 如果a对象中有属性age则打印self.age的值,否则打印'non-existent'
print(getattr(a, 'age', 'non-existent'))
print("*" * 100)

# 如果有方法first,打印其地址,否则打印default
print(getattr(a, 'first', 'default'))
print("*" * 100)

# 如果有方法first,运行函数并打印返回值,否则,打印default
print(getattr(a, 'first', 'default')())
print("*" * 100)

# 如果有方法second,运行函数并打印None否则打印default
print(getattr(a, 'second', 'default')())

运行结果:

getattr,python,python,attr

示例代码3:   【对对象中的方法传参使用】

class Demo(object):
    def run(self, name, age):
        return f"My name is {name}, age is {age}!"


aa = getattr(Demo, 'run')
print(aa)

bb = getattr(Demo(), 'run')
print(bb)

cc = getattr(Demo, 'run')(1, "dgw", "26")
print(cc)

dd = getattr(Demo(), 'run')("dgw", "26")
print(dd)

运行结果:

getattr,python,python,attr

示例代码4:  【requests方法使用getattr()】

import requests

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"
}

# 最后有没有问号结果都一样
url = 'https://www.baidu.com/s?'

# 请求参数是一个字典 即wd=python
kw = {'wd': 'python'}

# 方法一:
# 带上请求参数发起请求,获取响应
response = requests.get(url, headers=headers, params=kw)

print(response.status_code)
print(response.url)

# 方法二:使用getattr()
response2 = getattr(requests, 'get')(url, headers=headers, params=kw)
print(response2.status_code)
print(response2.url)

运行结果:

getattr,python,python,attr文章来源地址https://www.toymoban.com/news/detail-573728.html

到了这里,关于python中getattr()函数用法详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python中的filter函数用法详解

    目录 引言 一、filter函数基本用法 二、filter函数应用场景 1、筛选符合条件的元素 2、数据清洗和预处理 3、复杂条件筛选 4、与其他函数结合使用 三、filter函数与lambda表达式 四、filter函数与列表推导式 五、总结 Python中的filter函数是一种内置的高效过滤器,用于从序列中筛选

    2024年02月21日
    浏览(56)
  • Python中cv2.Canny() 函数用法详解

    一、Canny算子边缘检测原理及步骤 cv2.Canny() 函数是 OpenCV 中的边缘检测函数之一,用于检测图像的边缘。它的基本原理是通过计算图像中每个像素点的梯度值来检测边缘。具体来说,它的实现步骤如下: 1、对输入图像进行高斯滤波,以平滑图像并去除噪声; 2、计算图像的梯

    2024年02月09日
    浏览(53)
  • python中的range函数|python中的range函数|range()函数详解|Python中range(len())的用法

    range() 是 Python 内置的一个函数,用于生成一个整数序列。具体来说,它的定义如下: start、stop、step 分别表示序列的起始值、终止值和步长。start 和 step 是可选参数,如果不指定则默认为 0 和 1。 当只传入一个参数时,表示生成从 0 开始、小于该参数的整数序列。例如: 这

    2024年02月07日
    浏览(65)
  • Python 程序设计入门(018)—— format() 函数的用法详解

    format() 函数可以对数据进行格式化处理,将值转换为由 format_spec 控制的【格式化】表示形式。format() 函数的语法格式如下: 说明: (1)value:要转换的数据。 (2)format_spec:格式化解释,取决于值参数的类型; (3)默认情况下,format_spec 是一个空字符串,通常与调用 st

    2024年02月03日
    浏览(42)
  • Python-pandas:数据合并merge函数用法详解

    介绍一下数据分析中很常用的一个函数——merge,它能够进行高效的数据合并操作。先看一下语法格式及其初步解释: 生成的两个DataFrame对象如下: 1、参数left,right: 将df_d作为左侧的frame,df_e作为右侧的frame,则参数left=df_d,right=df_e; 2、参数how: 当参数how=\\\'left\\\':仅使用左

    2024年02月15日
    浏览(48)
  • NTM中attr的用法

    这段代码是使用Python的attrs库定义一个class,名为CopyTaskParams。这个class的对象包含了一系列的参数,用于控制复制任务模型的行为。下面解释一下每个参数的含义: name: str,复制任务的名称,默认值为\\\"copy-task\\\"。 controller_size: int,控制器的大小,默认值为100。 controller_layers:

    2024年02月06日
    浏览(31)
  • python Format()函数的用法___实例详解(一)(全,例多)___各种格式化替换,format对齐打印

    (格式化替换,替换,列表字典替换,类格式化, 魔法函数格式化,对齐及填充格式化,format对齐打印) 本篇目录内容: 📘  一、format() 函数的语法 📘  二、format() 函数基本用法 📘  三、用对齐及填充的方式格式化 📘  四、用format函数实现对齐打印 📘  五、其他内容待

    2024年02月07日
    浏览(85)
  • snprintf函数的用法详解

    snprintf()函数是一种格式化函数,用于将格式化的字符串存储到一个字符数组中,并且有一个参数用来限制输出的最大字符数。 语法: int snprintf ( char * s, size_t n, const char * format, … ); 参数: s:指向要存储字符串(由format参数格式化)的字符数组。 n:指定存储字符串的最大字

    2024年02月10日
    浏览(49)
  • flush()函数用法详解

    最近在写一个小项目时用到了Java的序列化,在写入输出流时用到了 flush() 函数。网上搜了一下感觉讲的不是很详细,在此写一下自己的理解 先给出代码片段 在以上代码中我们用ObjectOutputStream 类用来序列化obj对象,并将该对象序列化到一个文件中。 我们给出了细微差别的两

    2024年02月05日
    浏览(82)
  • C++ freopen函数用法详解

    在OI里赛制中 如果没有文件操作或文件操作被注释,等待着你的就是 爆零 的命运。C和C++的文件操作,一般是用fopen或fstream,我们用 freopen ,即文件重定向。它的用法其实也挺简单。 参数: _Filename :要打开的文件名。 _Mode :打开方式,同fopen。 _File :一个FILE型指针,可以

    2024年02月06日
    浏览(64)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包