【问题标题】:Python object appears as map (dict) but can't call by attribute or __getitem__?Python 对象显示为 map (dict) 但不能按属性或 __getitem__ 调用?
【发布时间】:2017-04-06 05:59:27
【问题描述】:

我在 python 中有一个对象 myobjMyObj 的一个实例),当使用 print() 调用时,它会打印出来

{"host": "localhost", "user_indices": [], "password": null, "port": 27017}

所以myobj 似乎是一个字典样式的对象。但是myobj['host'] 提出了

TypeError: 'AutoProxy[MyObj]' object has no attribute '__getitem__'

我在尝试myobj.host 时收到AttributeError

我也尝试过使用myobj.__dict__['host']dict(myobj)['host'] 无济于事。有没有人遇到过这个问题?

【问题讨论】:

  • 你在这里使用什么 Python 模块?
  • 这些方法之一是否在MyObj 类或其超类中被覆盖:__repr____str____unicode__

标签: python oop object dictionary attributes


【解决方案1】:

首先,python中没有“null”这样的东西。您应该改用“无”。当您使用 null 时,代码应引发 NameError。 其次,试试这段代码,也许只是将 null 切换为 None 应该可以解决问题:

>>> temp = {"host": "localhost", "user_indices": [], "password": None, "port": 27017}
>>> temp['host']
'localhost'
>>> 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-29
    • 2018-04-13
    • 2013-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-12
    • 2017-01-08
    相关资源
    最近更新 更多