zoukankan      html  css  js  c++  java
  • Python之hasattr,getattr与setattr的使用

    一. 定义一个类

    class Person(object):
        def __init__(self, name):
            self.name = name
    
        def fun1(self):
            print('fun1')
    

    二. hasattr

    检查某对象Object中是否包某个属性或方法。语法为:hasattr(object,name)

    (一). 用法

    person = Person('test')
    print(hasattr(person, 'name'))  # True
    print(hasattr(person, 'name1'))  # False
    print(hasattr(person, 'fun1'))  # True
    

    由于name1Person这个类中不存在会返回False,而name存在就会返回True. 可以使用hasattr来判断某对象中是否存在某个属性或者某个方法。

    三. getattr

    获取某个对象Object中的属性的属性值。语法为:getattr(object,name,default=None)

    (一). 用法

    person1 = Person('test1')
    print(getattr(person1, 'name'))  # test1
    print(getattr(person1, 'name1', '没有值'))  # 没有值
    
    # 不建议使用getattr操作获取函数的返回值。
    # <bound method Person.fun1 of <__main__.Person object at 0x7fa7aa29b460>>
    print(getattr(person1, 'fun1')) 
    

    注意:如果使用getattr来获取不存在的属性时会出现报错。个人建议先使用hasattr判断你需要的属性存在时再使用getattr来获取值。

    四. setattr

    给某个对象Object添加一个属性或方法设置其属性或方法的值。语法为:setattr(object,name,value)

    (一). 用法

    1. 设置属性

    person2 = Person('test2')
    setattr(person2, 'age', 18)
    print(person2.age)  # 18
    print(person2.name)  # test2
    setattr(person2, 'name', 'new test2')
    print(person2.name)  # new test2
    

    2. 设置方法

    # 设置不存在的方法。
    person3 = Person('test3')
    def test():
        return "test 函数"
    setattr(person3, 'test', test)
    print(person3.test())  # test 函数
    
    # 设置同名的方法,同名方法里的内容会随之替换的。
    def fun1():
        return 'fun1 函数'
    setattr(person3, 'fun1', fun1)
    print(person3.fun1()) # fun1 函数
    
  • 相关阅读:
    16日彻底去除安卓应用的内置广告
    配台600元的主机套装 自己组装 全新
    带记录功能的计算器
    华为8812 进入工程模式 和打电话黑屏问题
    买平板 四核 500~600左右对比
    querySelector()方法
    Javascript实例教程:querySelector()方法接受一个CSS查询并返回匹配模式的第一个子孙元素,如果没有匹配的元素则返回null。
    Android实用代码七段(二)
    Android实用代码七段(三)
    Firebug入门指南
  • 原文地址:https://www.cnblogs.com/zhenzi0322/p/14880782.html
Copyright © 2011-2022 走看看