美文网首页
python 中获取对象的属性(obj-->dict)

python 中获取对象的属性(obj-->dict)

作者: jiaxiaolei | 来源:发表于2018-03-01 17:05 被阅读432次

    在 对象(object)这是作为数据组织形式时,可以很方便获取对象的属性,进而很方便实现 obj 和 dict 的转换...

    举例:

    
    对象的属性: 
    
    >>> class A():
    ...     pass
    ...
    
    
    >>> a = A()
    >>> a
    <__main__.A instance at 0x108bb3368>
    >>> a.name = 'jia'
    >>> a.age = 20
    >>> dir(a)
    ['__doc__', '__module__', 'age', 'name']
    >>> a.__dict__
    {'age': 20, 'name': 'jia'}
    >>> a.name
    'jia'
    >>> a.age
    20
    
    
    
    
    
    #!/usr/bin/env python
    # coding=utf-8
    
    #class转dict,以_开头的属性不要
    def props(obj):
        pr = {}
        for name in dir(obj):
            value = getattr(obj, name)
            if callable(value):
                print 'value is callable, name:%s, value: %s' % (name, value)
    
            if not name.startswith('__') and not callable(value) and not name.startswith('_'):
                pr[name] = value
        return pr
    # 将class转dict,以_开头的也要
    def props_with_(obj):
        pr = {}
        for name in dir(obj):
            value = getattr(obj, name)
            if not name.startswith('__') and not callable(value):
                pr[name] = value
        return pr
    # dict转obj,先初始化一个obj
    def dict2obj(obj,dict):
        obj.__dict__.update(dict)
        return obj
    
    
    class A():
        pass
    
    a = A()
    
    a.name = 'jia'
    a.age = 20
    
    print props(a)
    print props_with_(a)
    
    b = {'age': 21, 'name': 'b'}
    obj =  dict2obj(A(), b)
    
    print dir(obj)
    
    def test():
        print 'come into test'
    
    a.test = test
    
    print props(a)
    
    

    output:

    {'age': 20, 'name': 'jia'}
    {'age': 20, 'name': 'jia'}
    ['__doc__', '__module__', 'age', 'name']
    value is callable, name:test, value: <function test at 0x101301ed8>
    {'age': 20, 'name': 'jia'}
    

    python object与dict互相转换

    https://www.cnblogs.com/zipon/p/8078763.html

    简介:

    这里介绍了获取对象属性的实现。

    相关文章

      网友评论

          本文标题:python 中获取对象的属性(obj-->dict)

          本文链接:https://www.haomeiwen.com/subject/qgqnxftx.html