广告
返回顶部
首页 > 资讯 > 后端开发 > Python >浅析Python中的getattr(),setattr(),delattr(),hasattr()
  • 579
分享到

浅析Python中的getattr(),setattr(),delattr(),hasattr()

getattrPythonsetattr 2022-06-04 18:06:52 579人浏览 安东尼

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

摘要

getattr()函数是python自省的核心函数,具体使用大体如下: 获取对象引用getattr Getattr用于返回一个对象属性,或者方法 class A: def __init__(self

getattr()函数python自省的核心函数,具体使用大体如下:

获取对象引用getattr

Getattr用于返回一个对象属性,或者方法


class A: 
def __init__(self): 
self.name = 'zhangjing' 
   #self.age=''
def method(self): 
print"method print" 
Instance = A() 
print getattr(Instance , 'name, 'not find') #如果Instance 对象中有属性name则打印self.name的值,否则打印'not find'
print getattr(Instance , 'age', 'not find') #如果Instance 对象中有属性age则打印self.age的值,否则打印'not find'
print getattr(a, 'method', 'default') 
#如果有方法method,否则打印其地址,否则打印default 
print getattr(a, 'method', 'default')() 
#如果有方法method,运行函数并打印None否则打印default 

注:使用getattr可以轻松实现工厂模式。

例:一个模块支持html、text、xml等格式的打印,根据传入的fORMate参数的不同,调用不同的函数实现几种格式的输出


import statsout 
def output(data, format="text"): 
output_function = getattr(statsout, "output_%s" % format) 
return output_function(data) 
setattr(object, name, value)
This is the counterpart of getattr(). The arguments
are an object, a string and an arbitrary value. The string may name an existing
attribute or a new attribute. The function assigns the value to the attribute,
provided the object allows it. For example, setattr(x,
'foobar', 123) is equivalent to
x.foobar = 123.

这是相对应的getattr()。参数是一个对象,一个字符串和一个任意值。字符串可能会列出一个现有的属性或一个新的属性。这个函数将值赋给属性的。该对象允许它提供。例如,setattr(x,“foobar”,123)相当于x.foobar = 123。

delattr(object, name)

This is a relative of setattr(). The arguments are
an object and a string. The string must be the name of one of the object's
attributes. The function deletes the named attribute, provided the object allows
it. For example, delattr(x, 'foobar') is
equivalent to del x.foobar.

与setattr()相关的一组函数。参数是由一个对象(记住Python中一切皆是对象)和一个字符串组成的。string参数必须是对象属性名之一。该函数删除该obj的一个由string指定的属性。delattr(x, 'foobar')=del x.foobar

•hasattr用于确定一个对象是否具有某个属性。

语法:

hasattr(object, name) -> bool

判断object中是否有name属性,返回一个布尔值。


>>> li=["zhangjing","zhangwei"]
>>> getattr(li,"pop")
<built-in method pop of list object at 0x011DF6C0>
>>> li.pop
<built-in method pop of list object at 0x011DF6C0>
>>> li.pop()
'zhangwei'
>>> getattr(li,"pop")()
'zhangjing'
>>>getattr(li, "append")("Moe") 

--结束END--

本文标题: 浅析Python中的getattr(),setattr(),delattr(),hasattr()

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

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 浅析Python中的getattr(),setattr(),delattr(),hasattr()
    getattr()函数是Python自省的核心函数,具体使用大体如下: 获取对象引用getattr Getattr用于返回一个对象属性,或者方法 class A: def __init__(self...
    99+
    2022-06-04
    getattr Python setattr
  • 全面了解Python的getattr(),setattr(),delattr(),hasattr()
    1. getattr()函数是Python自省的核心函数,具体使用大体如下: class A: def __init__(self): self.name = 'zhangjing' #self...
    99+
    2022-06-04
    getattr Python setattr
  • Python的hasattr()、getattr()、setattr()函数怎么用
    本文小编为大家详细介绍“Python的hasattr()、getattr()、setattr()函数怎么用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python的hasattr()、getattr()、setattr()函数怎么用”文...
    99+
    2023-06-30
  • 一文搞懂Python的hasattr()、getattr()、setattr() 函数用法
    目录hasattr()getattr()setattr()hasattr() hasattr() 函数用来判断某个类实例对象是否包含指定名称的属性或方法。该函数的语法格式如下: ha...
    99+
    2022-11-10
  • 浅谈python中的getattr函数 hasattr函数
    hasattr(object, name) 作用:判断对象object是否包含名为name的特性(hasattr是通过调用getattr(ojbect, name)是否抛出异常来实现的)。 示例: ...
    99+
    2022-06-04
    函数 浅谈 getattr
  • 浅析Python中的for 循环
    Python for 和其他语言一样,也可以用来循环遍历对象,本文章向大家介绍Python for 循环的使用方法和实例,需要的朋友可与参考一下。 一个循环是一个结构,导致第一个程序要重复一定次数。重复不断...
    99+
    2022-06-04
    Python
  • 浅析python中的set类型
    目录一. 定义二. 创建set1. 直接使用{}创建新的set并初始化2. 使用set关键字来创建3. 创建空的set三. 基本操作1. 重复的操作在set中自动被过滤2. 通过ad...
    99+
    2022-11-11
  • 浅析Python中signal包的使用
    在liunx系统中要想每隔一分钟执行一个命令,最普遍的方法就是crontab了,如果不想使用crontab,经同事指点在程序中可以用定时器实现这种功能,于是就开始摸索了,发现需要一些信号的知识... 查看你...
    99+
    2022-06-04
    Python signal
  • 浅析Python中的套接字编程
    目录一、为什么使用套接字二、什么是套接字三、如何在Python中实现Socket编程四、什么是服务器五、什么是客户端5.1、Echo Client-Server5.2、Multiple Communications六...
    99+
    2022-06-02
    Python 套接字
  • 如何浅析Python中的Python全局变量
    如何浅析Python中的Python全局变量,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Python是一种面向对象的开发语言,在函数中使用全局变量,一般应作全...
    99+
    2023-06-17
  • 浅析python中SQLAlchemy排序的一个坑
    前言 SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作,简言之便是:将对象转换成SQL,然后使用数据API执行SQL并获取执行结果。...
    99+
    2022-06-04
    python SQLAlchemy
  • 浅析python中的分片与截断序列
    序列概念 在分片规则里list、tuple、str(字符串)都可以称为序列,都可以按规则进行切片操作 切片操作 注意切片的下标0代表顺序的第一个元素,-1代表倒序的第一个元素;且切片不包括右边界,例如[0...
    99+
    2022-06-04
    序列 分片 python
  • 浅析Python中的多条件排序实现
    多条件排序及itemgetter的应用 曾经客户端的同事用as写一大堆代码来排序,在得知Python排序往往只需要一行,惊讶无比,遂对python产生浓厚的兴趣。 之前在做足球的积分榜的时候需要用到多条件排...
    99+
    2022-06-04
    多条 Python
  • 浅析Python中MySQLdb的事务处理功能
    前言 任何应用都离不开数据,所以在学习python的时候,当然也要学习一个如何用python操作数据库了。MySQLdb就是python对mysql数据库操作的模块。今天写了个工具,目的是把csv中的数据...
    99+
    2022-06-04
    事务处理 功能 Python
  • 浅析Python中else语句块的使用技巧
    学过C/C++的都知道,else语句是和if语句搭配使用的,但是在Python中,else语句更像是作为一个模块,不仅仅可以和if语句搭配,还可以和循环语句,异常处理语句搭配使用。 下面逐个进行介绍: &l...
    99+
    2022-06-04
    使用技巧 语句 Python
  • 浅析Python 中整型对象存储的位置
    在 Python 整型对象所存储的位置是不同的, 有一些是一直存储在某个存储里面, 而其它的, 则在使用时开辟出空间. 说这句话的理由, 可以看看如下代码: a = 5 b = 5 a is b # T...
    99+
    2022-06-04
    整型 对象 位置
  • 浅析python中5个带key的内置函数
    目录1.max取最大值函数2.min取最小值函数3.filter过滤函数实例1实例24.map序列映射函数实例1实例25.sorted序列排序函数(1) cmp参数(2)key参数(...
    99+
    2022-11-11
  • 浅析Python字符串中的r和u的区别
    目录1.r(R)2.u(U)补充参考文献Python中字符串前面我们经常看到加r(R)或u/(U)的前缀,而这两个符号是什么意思呢? 1.r(R) r意为raw,表示不包含转义字符的...
    99+
    2022-11-12
  • 浅析Python的web.py框架中url的设定方法
    网页中的数据在传递的时候有GET和POST两种方式,GET是以网址的形式传参数,在web.py中有着很好的匹配,如果我们配置以下的urls urls =( '/','index', '/we...
    99+
    2022-06-04
    框架 方法 web
  • 浅析Python中元祖、列表和字典的区别
    1、列表(list)   list是处理一组有序项目的数据结构,即你可以在一个列表中存储一个序列的项目。   列表中的项目应该包括在方括号中,这样Python就知道你是指明一个列表。一旦你创建了一个列表,就...
    99+
    2022-06-04
    元祖 字典 区别
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作