python dictionary key Vs对象属性

Naz*_*san 3 python dictionary object

假设我有对象有关键'dlist0',属性'row_id'我可以访问为

getattr(dlist0,'row_id')
Run Code Online (Sandbox Code Playgroud)

然后它返回值,但如果我有一本字典

ddict0 = {'row_id':4, 'name':'account_balance'}
getattr(ddict0,'row_id')
Run Code Online (Sandbox Code Playgroud)

这不行

我的问题是如何以相同的方式访问ddict0和dlist0

任何人都可以帮助我吗?

Amb*_*ber 6

字典具有项目,因此使用定义的任何内容__getitem__()来检索密钥的值.

对象具有属性,因此用于__getattr__()检索属性的值.

理论上你可以覆盖一个指向另一个,如果你需要 - 但为什么你需要?为什么不写一个辅助函数代替:

Python 2.x:

def get_value(some_thing, some_key):
    if type(some_thing) in ('dict','tuple','list'):
        return some_thing[some_key]
    else:
        return getattr(some_thing, some_key)
Run Code Online (Sandbox Code Playgroud)

Python 3.x:

def get_value(some_thing, some_key):
    if type(some_thing) in (dict,tuple,list):
        return some_thing[some_key]
    else:
        return getattr(some_thing, some_key)
Run Code Online (Sandbox Code Playgroud)