【Python】对象属性操作内置函数(hasattr/getattr...)


Python对象属性操作的方法包括hasattr、getattr、setattr和delattr;
实例化的对象中属性是只读的,无法使用delattr执行删除操作。

hasattr

用法:
hasattr(obj, name, /)
返回obj中是否存在name属性,存在返回True,反之返回否;
这是通过调用getattr(obj,name)并捕获AttributeError来完成的
实例演示:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

class X(object):
    y = 10
    def func1(self, num):
       print("input num=%s" % num)

x = X()
print(hasattr(x, 'y'))      #存在返回True
print(hasattr(X, 'func2'))  #不存在返回False

getattr

用法:
getattr(object, name[, default]) -> value

获取对象已命名的属性;
getattr(x, ‘y’)相当于x.y;
default值可选,当对象的属性不存在时返回默认值。
实例演示:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

class X(object):
    y = 10
    def func1(self, num):
       print("input num=%s" % num)

x = X()
print(x.y)
print(getattr(x,'y'))
print(getattr(x,'z', 1))
getattr(x, 'func1')(69)     #相当于x.func1(69)
getattr(x,'z')      #属性z不存在且没有定义缺省值,触发AttributeError

setattr

setattr(obj, name, value, /)
用法:
设置obj中的name为value,name若不存在则新增name属性。
setattr(x, ‘y’, v) 相当于x.y = v
实例演示:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

class X(object):
    y = 10

x = X()
setattr(X, 'y', 20)
print(X.y)    #20
print(x.y)    #20
setattr(x, 'y', 25)
print(X.y)    #20
print(x.y)    #25

delattr

用法:
delattr(obj, name, /)
删除obj中的name属性
delattr(x, ‘y’) 相当于del x.y
实例演示:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

class X(object):
    y = 10
    z = 15

x = X()
delattr(X, 'y')
print(hasattr(x, 'y'))  # False
delattr(x, 'z')   #触发AttributeError: 'X' object attribute 'z' is read-only
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值