【手把手python系列】内置函数之getattr(),hasattr(),setattr(),delattr()

【手把手python系列】内置函数之getattr,hasattr,setattr,delattr

hasattr()

hasattr() 函数用于判断对象是否包含对应的属性。

"""
语法:hasattr(object, name)
参数:object -- 对象;name -- 字符串,属性名。
返回:如果对象有该属性返回 True,否则返回 False。
"""
"""=================实例==============="""
class Coordinate:
    x = 10
    y = -5
    z = 0


point1 = Coordinate()
print(hasattr(point1, 'x'))
print(hasattr(point1, 'y'))
print(hasattr(point1, 'z'))
print(hasattr(point1, 'no'))  # 没有该属性

"""
结果:
True
True
True
False
"""

getattr()

getattr() 函数用于返回一个对象属性值。

 """
语法:getattr(object, name[, default])
参数:object -- 对象;name -- 字符串,对象属性;default -- 默认返回值,如果不提供该参数,在没有对应属性时,将触发 AttributeError。
返回:返回对象属性值。
"""
"""=================实例==============="""
class A():
    bar = 1

a = A()
# 获取对象的bar属性的value值
print(getattr(a,'bar'))
# 获取对象的bar2属性的value值,如果没有返回‘无bar2属性’
print(getattr(a, 'bar2', "无bar2属性"))
# 获取对象的bar2属性的value值,如果没有抛出异常
print(getattr(a, 'bar2'))
"""结果: 
Traceback (most recent call last):
  File "xxx/xxx.py", line x, in <module>
    print(getattr(a, 'bar2'))
AttributeError: 'A' object has no attribute 'bar2'
1
无bar2属性
"""

setattr()

setattr() 函数对应函数 getattr(),用于设置属性值,该属性不一定是存在的。

"""
语法:setattr(object, name, value)
参数:object -- 对象;name -- 字符串,对象属性;value -- 属性值
返回:无
"""

"""=================实例==============="""
"""
对已存在的属性进行赋值:
"""
class A(object):
    bar = 1
    
a = A()
print('bar属性的初始值:',getattr(a, 'bar'))          # 获取属性 bar 值
setattr(a, 'bar', 5)       # 设置属性 bar 值
print('bar属性设置后的值:',a.bar)


"""
如果属性不存在会创建一个新的对象属性,并对属性赋值:
"""
class A():
    name = "runoob"

a = A()
setattr(a, "age", 28)
print('新增属性age的值',a.age)

"""
结果:
bar属性的初始值: 1
bar属性设置后的值: 5
新增属性age的值 28
"""

delattr

delattr 函数用于删除属性。
delattr(x, ‘foobar’) 相等于 del x.foobar。

"""
语法:delattr(object, name)
参数:object -- 对象;name -- 必须是对象的属性。
返回:无
"""
"""=================实例==============="""

class Coordinate:
    x = 10
    y = -5
    z = 0


point1 = Coordinate()

print('x = ', point1.x)
print('y = ', point1.y)
print('z = ', point1.z)

delattr(Coordinate, 'z')

print('--删除 z 属性后--')
print('x = ', point1.x)
print('y = ', point1.y)

# 触发错误
print('z = ', point1.z)

"""
结果:
x =  10
y =  -5
z =  0
--删除 z 属性后--
x =  10
y =  -5
Traceback (most recent call last):
  File "D:xxx/xxx.py", line xx, in <module>
    print('z = ', point1.z)
AttributeError: 'Coordinate' object has no attribute 'z'
"""

结语

参考菜鸟课程:python内置函数
大家可以理解记忆哈,我是根据英文意思来记忆的,你们呢?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值