AttributeError: 'EventbriteObject' object has no attribute 'read'

AttributeError: 'EventbriteObject' object has no attribute 'read'

我正在使用 Eventbrite api 搜索一些事件,但在某些时候我试图使用 json.load() 从响应中获取一些属性但是在尝试时出现此错误打印 events_load.

    Traceback (most recent call last):
  File "/Users/jo/PycharmProjects/api-eventbrite/api-eventbrite.py", line 21, in <module>
    events_load = json.load(events)
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/json/__init__.py", line 265, in load
    return loads(fp.read(),
AttributeError: 'EventbriteObject' object has no attribute 'read'

打印 events_dump 时,我可以完美地看到 json 响应的完整结构。

我想我碰到了 python 的一些内部结构,作为初学者我并不知道。 有人可以指出我对这个错误的一个很好的解释。 我如何了解某个对象具有哪些属性和方法?

代码下方

from eventbrite import Eventbrite

eventbrite = Eventbrite(my_auth_token)

events = eventbrite.get('/events/search/?q=lisboa&categories=102')

# events_dump = json.dumps(events, indent=4)
# print(events_dump)

events_load = json.load(events)
print(events_load)

你应该包括整个回溯,但我很确定错误发生在这里

events_load = json.load(events)

并且错误表明事件是一个对象(json.load() 将文件作为其参数,这就是为什么错误消息说它没有 .read() 方法)。

可能 events 没有很好的印刷表示。在那种情况下,使用

是完全合理的
print(json.dumps(events, indent=4))

以格式良好的方式打印出来。

How can i understand what are the attributes and methods a certain object has ?

放置print(dir(eventbrite)),你会看到Eventbrite对象中的所有函数和变量。但是我怀疑您并不真正关心这些东西,并且您想查看检索到的事件的 key/values。你可以这样做:

from eventbrite import Eventbrite

eventbrite = Eventbrite(my_auth_token)
events = eventbrite.get('/events/search/?q=lisboa&categories=102')
for key, val in events.items():
    print('{0}:\t{1}'.format(key,val))

还有更优雅的方式来做到这一点,例如 pprint,但我会让您弄明白(我已经提供了链接)。此外,我建议您开始学习如何使用 Python 的调试器 pdb 来帮助您设置断点和查看值。希望对您有所帮助。

链接