zoukankan      html  css  js  c++  java
  • python setattr()、getattr()、hasattr() 函数用法介绍

    一.函数介绍

    在动态检查对象是否包含某些属性(包括方法〉相关的函数有如下几个:

    • hasattr(object,name):检查 object 对象是否包含名为 name 的属性或方法。
    • getattr(object,name,default=None):获取 object 对象中名为 name 的属性的属性值(属性和函数都叫做属性)。
    • setattr(object,name,value):将 object 对象的 name 属性设为 value。
     1 class Learn_Python:
     2     def __init__(self, detail, view_times):
     3         self.detail = detail
     4         self.view_times = view_times
     5 
     6     def start(self):
     7         print("尝试学习%s" % self.detail)
     8 
     9 
    10 c = Learn_Python('python自动化', 20)

    二.hasatter()函数使用

    1)判断类中存在的属性和方法

    1 # 判断是否包含指定的属性或方法
    2 print(hasattr(c, 'detail'))  # True
    3 print(hasattr(c, 'view_times'))  # True
    4 print(hasattr(c, 'start'))  # True

    2)判断类中不存在的属性和方法

    1 # 判断是否包含指定的属性或方法
    2 print(hasattr(c, 'detail_1'))  # False
    3 print(hasattr(c, 'view_times_1'))  # False
    4 print(hasattr(c, 'start_1'))  # False

    二.getattr()函数使用

    1)获取类中存在的属性

    1 # 获取指定属性的属性值和方法
    2 print(getattr(c, 'detail'))  # 'python自动化'
    3 print(getattr(c, 'view_times'))  # 20
    4 print(getattr(c, 'start'))  # <bound method Learn_Python.start of <__main__.Learn_Python object at 0x0000020EC839E3C8>>

    2)获取类中不存在的属性

    结果直接报错

    3)获取类中不存在的属性,并且给它默认值(这个默认值可以自己定义)

    1 #获取不存在的属性,并且给默认值
    2 print(getattr(c, 'start', '默认值'))  #<bound method Learn_Python.start of <__main__.Learn_Python object at 0x00000163F6D08B38>>

    二.hasattr()函数使用

    1)指定属性设置为新属性值

    1 #为指定属性设置属性值
    2 setattr(c, 'detail', 'python接口自动化')
    3 setattr(c, 'view_times', 32)
    4 #输出重新设置后的属性值
    5 print(c.detail)    #python接口自动化
    6 print(c.view_times)  #32

    2)为对象添加不存在的属性值

    1 #为对象添加不存在的属性值
    2 setattr(c, 'detail_1', 'python接口自动化')  #不存在的detail_1属性值
    3 #输出重新设置后的属性值
    4 print(c.detail_1)    #python接口自动化

    3)指定方法设置为新的方法

    1 def end ():
    2     print('随便的方法')
    3 # 将c的start方法设为end函数
    4 setattr(c, 'start', end)
    5 c.start()    #随便的方法

    4)为对象添加不存在的方法 

    1 def end ():
    2     print('随便的方法')
    3 # 为对象添加不存在的end函数
    4 setattr(c, "start_1",end)  #不存在的方法start_1
    5 c.start_1()    #随便的方法

    5)指定方法设置为属性(不能将方法变为属性值)

    1 def end ():
    2     print('随便的方法')
    3 # 将c的start方法设为end函数
    4 setattr(c, 'start', "end")
    5 c.start()    #TypeError: 'str' object is not callable
  • 相关阅读:
    原型模板分享——国外高阶版“大众点评”TripAdvisor
    插画手绘入门教程
    十大用户体验设计失败案例,你知道吗?
    用摹客,轻松管理设计规范!
    摹客“独门绝技”之评论审阅篇
    政务管理系统原型模板分享
    产品经理如何做需求分析?
    python基础知socket编程
    异常处理
    元类,__call__方法和单例模式
  • 原文地址:https://www.cnblogs.com/hao2018/p/11428951.html
Copyright © 2011-2022 走看看