当前位置:   article > 正文

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

python类内置getattr、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
"""
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

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属性
"""
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

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
"""
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35

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'
"""

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42

结语

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/197103
推荐阅读
相关标签
  

闽ICP备14008679号