python中的getattr的用法_Python中hasattr(),getattr(),setattr()的用法介绍(代码示例)

本篇文章给大家带来的内容是关于Python中hasattr(),getattr(),setattr()的用法介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

1、hasattr(object, name)

判断object里是否有name属性,有就返回True,没有则返回False。class MyClass(object):

name = 'jack'

age = '22'

obj = MyClass()

print(hasattr(obj, 'name')) # True

print(hasattr(MyClass, 'age')) # True

print(hasattr(obj, 'gender')) # False

2. getattr(object, name, [default])

用来获取object的属性或方法,有就打印出来. 没有就打印默认值,若是没有设置默认值则报错class MyClass(object):

name = 'jack'

age = '22'

def func(self):

return 'hello world!!!'

obj = MyClass()

print(getattr(MyClass, 'name')) # jack

print(getattr(obj, 'age')) # 22

print(getattr(MyClass, 'func')) #

print(getattr(obj, 'func')) # >

# print(getattr(MyClass, 'func1')) # 没有设置默认值,找不到方法会报错: AttributeError: type object 'MyClass' has no attribute 'func1'

print(getattr(MyClass, 'func1', None)) # 设置了默认值None,找不到就会返回默认值: None

print(getattr(MyClass, 'func')('self')) # hello world!!!

print(getattr(obj, 'func')()) # hello world!!!

3. setattr(object, key, value)

用来对object的属性key赋值value. 若是key存在,则更新value的值. 若key不存在,则先创建属性key再对其赋值value.class MyClass(object):

name = 'jack'

age = '22'

obj = MyClass()

setattr(MyClass, 'name', 'tom')

print(getattr(MyClass, 'name')) # tom

setattr(obj, 'age', 28)

print(getattr(obj, 'age')) # 28

setattr(MyClass, 'gender', 'male')

print(getattr(MyClass, 'gender')) # male

print(getattr(obj, 'gender')) # male

setattr(obj, 'hobby', 'skating')

print(obj, 'hobby') # <__main__.myclass object at> hobby

print(MyClass, 'hobby') # hobby

三个方法一起用:class MyClass(object):

name = 'jack'

age = '22'

# 判断Myclass是否有gender属性,有则打印,没有则添加

def if_attr(gender='male'):

if hasattr(MyClass, 'gender'):

return getattr(MyClass, 'gender')

return setattr(MyClass, 'gender', gender)

if_attr(gender='female')

print(getattr(MyClass, 'gender')) # female

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值