浅析Python中的getattr(),setattr(),delattr(),hasattr()
作者:很多不懂呀。。 发布时间:2022-11-10 08:26:41
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")
猜你喜欢
- 提到sa弱口令,我们首先就会想到,许多数据库都有1个类似的超级管理员账号,比如:Oracle是"system"和&quo
- php中可以把函数名通过字符串的方式传递给一个变量,然后通过此变量动态调用函数下面是一个简单的动态函数调用范例<html><
- 环境搭建准备工具:pyton3.5,selenium,phantomjs我的电脑里面已经装好了python3.5安装Seleniumpip3
- 如何定义记录集打开的游标类型和锁定类型?我们知道,打开记录集时,可以定义记录集打开的游标类型和锁定类型。在adovbs.inc文件中就定义了
- 定义和用法fopen() 函数打开文件或者 URL。如果打开失败,本函数返回 FALSE。语法fopen(filename,mode,inc
- 在做视觉设计时,如何高效地使用图标是一门学问:该使用什么样的图标?图标该放在哪里?大小如何?图标的使用是否帮助用户更好更快的理解内容,亦或是
- 本文实例讲述了Symfony2实现从数据库获取数据的方法。分享给大家供大家参考,具体如下:假设有一张表:test, 字段:name,colo
- 最近对H1的讨论很多(在文章内容页中),大致有以下两种情况:H1应该用于文章的标题上H1应该用于站点的标题上相信大多数人都偏向第一种方式:用
- XMLHttpRequest 最近在 W3C 标准之路上又迈进了一步,W3C Web API&nbs
- 序本文主要研究一下golang的deferdeferreturn先赋值(对于命名返回值),然后执行defer,最后函数返回defer函数调用
- asp十进制转二进制;二进制转十进制;二进制转十六进制;十六进制转二进制;八进制转二进制'二进制转八进制;八进制转十进制;十六进制转
- 本文实例为大家分享了python模拟登录图书馆的具体代码,供大家参考,具体内容如下模拟表单提交的原理:我们都知道Http是无状态的,所以当我
- 目的:设计一个应用GUI用于对比两个Excel文件思路1.参数同一个excel文件两个sheet页其中一个ODS(老数据),一个DWH(新数
- ------谁正在访问数据库?Select c.sid, c.serial#,c.username,a.object_id,b.
- 现在大部分网站都使用asp+access构建,这样的话通过下载access数据库简单就可以对网站进行破坏! 而很多的网站都不太重
- ASP+javascript实现可显示和隐藏的树型菜单实例:<script language=&qu
- Xajax是PHP一个不用刷新或者跳到其他页面,就能通过点击组件等与后台后台数据库交互的技术Xajax是php的一个插件,要想使用Xajax
- python实现二级登陆菜单的代码如下所示:""" 1. * 菜单 注册 登陆 注销 2.进入每一个一级菜单,都
- 很多文章都有提到关于使用phpExcel实现Excel数据的导入导出,大部分文章都差不多,或者就是转载的,都会出现一些问题,下面是本人研究p
- 写完这个项目后,导师说这个你完全可以当作毕业项目使用了,写的很全,很多的都设计考虑周全,但我的脚步绝不止于现在,我想要的是星辰大海!与君共勉