【Python】 getattr 函数

本文详细介绍了Python中的反射机制,包括getattr、hasattr、setattr和delattr四个内置函数的使用方法和示例。通过一个具体的类实例,展示了如何利用这些函数动态地获取、设置和删除对象的属性。

###getattr 是python的一个内建函数。

** getattr()** 这个方法最主要的作用是实现反射机制。即通过字符串获取方法实例。这样,你就可以把一个类可能要调用的方法放在配置文件里,在需要的时候动态加载。

python中和getattr相关的 hasattr , setattr ,delattr 。

class Xiaobai:

	def __init__(self):

		self.name = "xiaobai"

	def setName(self,name):

		self.name = name

	def getName(self):

		return self.name

	def greet(self):

		print "Hello, I am %s " % self.name

foo = Xiaobai()

test = hasattr(foo,'setName') # 判断 foo对象中是否含有setName方法,如果有返回True
print test

输出:

True

一、 hasattr(object,name)

判断object中过是否含有name属性,例如:

foo = Xiaobai()
hasattr(foo,'setName') # 判断 foo对象中是否含有setName方法,如果有返回True

二、getattr(object,name,default)

如果存在name属性(方法)则返回name的值(方法地址),否则返回default值。

getattr(foo,'name','NA') # 存在name属性,所以返回其value
输出:
xiaobai
getattr(foo,’age’,’NA’)
输出:
NA

它其实和直接object.name用法一样 三、setattr(object,name,default)

setattr(foo,'age','18')

字符串可能列出一个现有的属性(或一个新的属性)。这个函数将值付给属性的 类似 : foo.age = 18

setattr(foo,'age','18')
test3 = getattr(foo,'age','not found')
print test3

输出:
18

四、delattr(object,'name')

delattr(foo,'name') # 删除属性name ,原值为 'xiaobai'

getattr(foo,'name','not found')

输出:

not found

转载于:https://my.oschina.net/whitejavadog/blog/823783

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值