欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python 的getattr()函数、setattr()函数、hasattr()函数、delattr()函数

程序员文章站 2022-07-15 16:50:26
...
getattr函数
语法
getattr(object, name, default) 返回一个对象的属性值

object参数是一个对象
name参数是对象的属性值
default参数表示如果对象的属性值不存在,则返回这个默认值,可选

setattr(object, name, value) 没有返回值

object参数是一个对象
name参数是对象的属性值
value参数表示设置name的值

注意:如果name是已经存在的属性,那么value是修改name的值,如果name不存在,那么value是新增的name值
hasattr(object, name) 返回值是true或false

object参数是一个对象
name参数表示对象的属性或者方法,如果存在返回true,不存在返回false

delattr(object, name)

object参数是一个类名或者对象名
name参数表示属性值

class A:
	a = 1
	def __init__(self):
		self.c = 2
	def run(self):
		pass

a = A()
print(getattr(a, "a"))  # 获取a的属性值,也可以把a换成A
print(getattr(a, "d", 2))  # 属性d不存在,但是输出默认值2
输出:1
setattr(a, "a", 5)  # 把a的值设置为5
print(a.a) 
输出:5
setattr(a, "b", 8)  # 新增属性b,并且把b的值设为8
print(a.b)
输出:8
print(hasattr(a, "a"))  # 判断a对象是否有a属性
输出:True
print(hasattr(a, "run"))  # 判断a对象是否有run方法
输出:True
print(hasattr(a, "f"))  # 判断a对象是否有f属性或方法
输出:False
delattr(A, "a")  # 删除A的a属性
print(hasattr(a, "a"))
输出:False
delattr(a, "c")  # 删除a的c属性
print(hasattr(a, "c"))
输出:False 
注意:在delattr中如果删除类属性,则需要使用类对象,如果删除实例属性,需要使用实例对象