返回顶部
首页 > 资讯 > 后端开发 > Python >Python的getattr函数方法学习使用示例
  • 839
分享到

Python的getattr函数方法学习使用示例

2024-04-02 19:04:59 839人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

正文 __getattr__函数的作用: 如果属性查找(attribute lookup)在实例以及对应的类中(通过__dict__)失败, 那么会调用到类的__getattr__函

正文

__getattr__函数的作用: 如果属性查找(attribute lookup)在实例以及对应的类中(通过__dict__)失败, 那么会调用到类的__getattr__函数;

如果没有定义这个函数,那么抛出AttributeError异常。由此可见,__getattr__一定是作用于属性查找的最后一步

举个栗子:

class A(object):
    def __init__(self, a, b):
        self.a1 = a
        self.b1 = b
        print('init')
    def mydefault(self, *args):
        print('default:' + str(args[0]))
    def __getattr__(self, name):
        print("other fn:", name)
        return self.mydefault
a1 = A(10, 20)
a1.fn1(33)
a1.fn2('hello')

运行结果:

init
other fn: fn1
default:33
other fn: fn2
default:hello

第16行调用fn1属性时,查找不到次属性,程序调用__getattr__方法

用__getattr__方法可以处理调用属性异常

class Student(object):
    def __getattr__(self, attrname):
        if attrname == "age":
            return 'age:40'
        else:
            raise AttributeError(attrname)
x = Student()
print(x.age)  # 40
print(x.name)

这里定义一个Student类和实例x,并没有属性age,当执行x.age,就调用_getattr_方法动态创建一个属性,执行x.name时,__getattr__方法没有对其处理,抛出异常

age:40
  File "XXXX.py", line 10, in <module>
    print(x.name)
  File "XXXX.py", line 6, in __getattr__
    raise AttributeError(attrname)
AttributeError: name

下面展示一个_getattr_经典应用的例子,可以调用dict的键值对

class ObjectDict(dict):
    def __init__(self, *args, **kwargs):
        super(ObjectDict, self).__init__(*args, **kwargs)
    def __getattr__(self, name):
        value = self[name]
        if isinstance(value, dict):
            value = ObjectDict(value)
        return value
if __name__ == '__main__':
    od = ObjectDict(asf = {'a': 1}, d = True)
    print(od.asf, od.asf.a)  # {'a': 1} 1
    print(od.d)  # True

以上就是python的getattr方法学习使用示例的详细内容,更多关于Python getattr方法的资料请关注编程网其它相关文章!

--结束END--

本文标题: Python的getattr函数方法学习使用示例

本文链接: https://lsjlt.com/news/119932.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python的getattr函数方法学习使用示例
    正文 __getattr__函数的作用: 如果属性查找(attribute lookup)在实例以及对应的类中(通过__dict__)失败, 那么会调用到类的__getattr__函...
    99+
    2024-04-02
  • Python函数介绍:getattr函数的用法和示例
    Python函数介绍:getattr函数的用法和示例在Python中,getattr()是一个内置函数,用于获取对象的属性值。在不知道对象的属性名称的情况下,可以使用getattr()函数来动态地访问属性。本文将介绍getattr()函数的...
    99+
    2023-11-04
    用法 示例 getattr
  • Python3学习urllib的使用方法示例
    urllib是python的一个获取url(Uniform Resource Locators,统一资源定址符)了,可以利用它来抓取远程的数据进行保存,本文整理了一些关于urllib使用中的一些关于head...
    99+
    2022-06-04
    示例 使用方法 urllib
  • python中getattr()函数用法详解
    getattr() 函数用于返回一个对象属性值。 def getattr(object, name, default=None): # known special case of getattr """ getattr(obje...
    99+
    2023-09-08
    python attr
  • python学习print中format的用法示例
    变量插入字符串的方法 Python中的format()函数是一种将变量插入字符串的方法,能够使字符串更易于阅读和理解。它支持许多不同的用法,以下是具体的用法和说明: 使用位置参数传...
    99+
    2023-03-24
    python print format用法 python print format
  • 一文搞懂Python的hasattr()、getattr()、setattr() 函数用法
    目录hasattr()getattr()setattr()hasattr() hasattr() 函数用来判断某个类实例对象是否包含指定名称的属性或方法。该函数的语法格式如下: ha...
    99+
    2024-04-02
  • Python的hasattr()、getattr()、setattr()函数怎么用
    本文小编为大家详细介绍“Python的hasattr()、getattr()、setattr()函数怎么用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python的hasattr()、getattr()、setattr()函数怎么用”文...
    99+
    2023-06-30
  • python学习之plot函数的使用教程
    在python环境中,若要绘制图形,一定离不开plot函数 那么,如何使用呢? 首先,你需要导入plot函数: import matplotlib.pyplot as plt ...
    99+
    2024-04-02
  • python神经网络之批量学习tf.train.batch函数示例
    目录学习前言tf.train.batch函数测试代码1、allow_samller_final_batch=True2、allow_samller_final_batch=False...
    99+
    2024-04-02
  • Python学习教程(Python学习视频_Python学习路线):Day06 函数和模块的使用
    Python学习教程(Python学习视频_Python学习路线):函数和模块的使用在讲解本章节的内容之前,我们先来研究一道数学题,请说出下面的方程有多少组正整数解。事实上,上面的问题等同于将8个苹果分成四组每组至少一个苹果有多少种方案。想...
    99+
    2023-06-02
  • python的函数学习2
    用来存放名字的地方,有三种名称空间:内置名称空间,全局名称空间,局部名称空间。 1 比如执行test.py: 2 3 python test.py 4 1、python解释器先启动,因而首先加载内置名称空间 5 2、执行test.p...
    99+
    2023-01-30
    函数 python
  • 学习Python和Spring,掌握数组的使用方法
    在计算机编程中,数组是一种非常常用的数据结构,它可以用来存储一系列相同类型的数据。Python和Spring是两种非常流行的编程语言和框架,它们都支持数组的使用。在本文中,我们将介绍Python和Spring中数组的基本概念和使用方法,并...
    99+
    2023-06-20
    spring 数组 教程
  • python学习pymongo模块的使用方法
    前言: pymongo模块是python操作mongo数据的第三方模块,记录一下自己常用到的简单用法。 首先需要连接数据库: MongoClient():该方法第一个参数是数据库所在...
    99+
    2024-04-02
  • ​​​​​​​Python入门学习之函数式编程的方法
    本篇内容介绍了“Python入门学习之函数式编程的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前言在 Python 中,函数是「头等公...
    99+
    2023-06-30
  • 通过示例学习python中os模块的使用
    os模块封装了常见的文件和目录操作 导入模块 import os 常用方法 os.rename(path,new_path_name) os.getcwd(path):返回当前工作目...
    99+
    2022-12-29
    python os模块使用 python os模块
  • PHP中的array_splice()函数使用方法及示例
    PHP中的array_splice()函数使用方法及示例在PHP编程中,数组是一种常用的数据结构,它可以用来存储多个相关的数据。而array_splice()函数是一种非常强大的数组操作函数,它可以在数组中插入、删除和替换元素。本篇文章将详...
    99+
    2023-11-18
    PHP array_splice() 示例
  • Linux signal()函数的使用学习
    目录signal() 函数1. 原型2.实例signal() 函数 无意中看到了 signal() 函数,感觉对这个函数的原型有诸多疑惑,学习一下,顺便分享。 1. 原型 Unix系...
    99+
    2023-05-20
    Linux signal函数 Linux signal()
  • Python的函数使用示例详解
    目录1 跳出循环-break2 python函数2.1 内置函数2.2 自定义函数2.3 main函数在两种python循环语句的使用中,不仅仅是循环条件达到才能跳出循环体。所以,在...
    99+
    2024-04-02
  • python中filter函数的用法示例
    python中filter函数主要是用来过滤序列,它的语法格式为“filter(function, iterable)”,参数function指的是判断函数,而参数iterable指的是可迭代对象;filter函数是通过function对i...
    99+
    2024-04-02
  • Python数学建模学习模拟退火算法多变量函数优化示例解析
    目录1、模拟退火算法2、多变量函数优化问题3、模拟退火算法 Python 程序4、程序运行结果1、模拟退火算法 退火是金属从熔融状态缓慢冷却、最终达到能量最低的平衡态的过程。模拟退火...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作