python的反射机制之getattr(), setattr(), hasattr(), delattr()

先上代码

#! coding:utf-8
class Statsout(object):

    name = "test"

    def test(self, data):
        print "\n\n"
        print data

    def getattr_test(self, formats=None, data=None):
        print (u"注解:hasattr()函数判断一个类是否存在formats对应这个属性, 存在则返回True, 不存在返回False")
        print (u"注解:getattr()函数返回formats对应这个属性的值")
        if formats is not None and hasattr(self, formats):
            print_function = getattr(self,  formats)
            return print_function(data)

    def setattr_test(self, data=None):
        print (u"注解: setattr()函数是为一个类创建一个属性或者修改属性的值!!!")
        print (u"注解: 已经存在的属性,我们修改属性的值\n")
        if data is not None and hasattr(self, data):
            print u"name属性的原始值", self.name
            setattr(self, data, "sdfsfsdfs")
            print u"name属性的修改后的值", self.name, "\n"

        print (u"注解: 属性不存在, 创建并赋值\n")
        print hasattr(self, "age")
        print u"注解: 返回False说明属性age不存在 "
        setattr(self, "age", "18")
        print hasattr(self, "age")
        print u"注解: 返回True说明age属性创建成功"
        print u"age属性的值",getattr(self, "age"), "\n"

        print (u"注解: delattr()删除一个类中对应的属性")
        print (u"注解: 删除刚才创建的age属性并判断是否存在,没有删除则返回True,已删除则返回False\n")
        delattr(self, "age")
        print hasattr(self, "age")
        print u"注解: 返回False说明age属性已被删除"
# 调用 getattr_test()函数
# Statsout().getattr_test(formats="test", data=u"python 回炉训练")

# 调用 setattr_test()函数
# Statsout().setattr_test(data="name")

调用getattr_test() 并传入参数

Statsout().getattr_test(formats="test", data=u"python 回炉训练")

输出结果如下:

E:\usr\Anaconda2\python.exe D:/workspace/ProxyManger/pythontext/gettartest.py
注解:hasattr()函数判断一个类是否存在formats对应这个属性, 存在则返回True, 不存在返回False
注解:getattr()函数返回formats对应这个属性的值



python 回炉训练

Process finished with exit code 0

调用setattr_test() 并传入参数

Statsout().setattr_test(data="name")

输出结果如下:

E:\usr\Anaconda2\python.exe D:/workspace/ProxyManger/pythontext/gettartest.py
注解: setattr()函数是为一个类创建一个属性或者修改属性的值!!!
注解: 已经存在的属性,我们修改属性的值

name属性的原始值 test
name属性的修改后的值 sdfsfsdfs 

注解: 属性不存在, 创建并赋值

False
注解: 返回False说明属性age不存在 
True
注解: 返回True说明age属性创建成功
age属性的值 18 

注解: delattr()删除一个类中对应的属性
注解: 删除刚才创建的age属性并判断是否存在,没有删除则返回True,已删除则返回False

False
注解: 返回False说明age属性已被删除

Process finished with exit code 0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值