您的位置:首页 > 编程语言 > Python开发

python attr相关

2015-08-27 23:01 651 查看
# coding=utf-8_
_author__ = "leaves"

# item相关的函数与[]调用相关  attr相关的函数与.调用相关
class myAttr():
    name = {};

    def __call__(self, key):  # 用于实例自身的调用,()调用的效果
        try:
            print('My Attr is %s.' % self[key])
            return self[key]
        except KeyError:
            return None

    def __getitem__(self, key):
        print '__getitem__'
        return self.name[key]

    def __setitem__(self, key, value):
        print '__setitem__'
        self.name[key] = value

    def __delitem__(self, key):
        print '__delitem__'
        del self.name[key]

    def __getattr__(self, key):
        print '__getattr__'
        return self.name[key]

    def __setattr__(self, key, value):
        print '__setattr__'
        self.name[key] = value

    def __delattr__(self, key):
        print '__delattr__'
        del self.name[key]

    def __str__(self):
        return 'My attr is %s' % self.name

    __repr__ = __str__

print'---------------1--------------'
s = myAttr()
print'---------------2--------------'
s['key'] = 'value'
print'---------------3--------------'
print s['key']  # 调用__call__
print'---------------4--------------'
del s['key']
print'---------------5--------------'
s('key')
print'---------------6--------------'
s.key = 'value2'
print'---------------7--------------'
print s.key
print'---------------8--------------'
print hasattr(s, 'key')
print'---------------9--------------'
del s.key
print'---------------10--------------'
# print s.key  调用__getattr__报错
print hasattr(myAttr, 'key')
print'---------------11--------------'
print s


输出:

---------------1--------------

---------------2--------------

__setitem__

---------------3--------------

__getitem__

value

---------------4--------------

__delitem__

---------------5--------------

__getitem__

---------------6--------------

__setattr__

---------------7--------------

__getattr__

value2

---------------8--------------

__getattr__

True

---------------9--------------

__delattr__

---------------10--------------

False

---------------11--------------

My attr is {}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: