为什么我得到AttributeError:'function'对象没有属性'list'

时间:2017-01-09 01:58:35

标签: python api google-api youtube-api

好吧所以我正在尝试为YouTube频道数据编写这个简单的通话请求但似乎我仍然太过于无法完全理解我做错了什么我明白有一些类型的语法错误但我想完全理解的是为什么会出现语法错误,以便将来轻松解决这个问题。我花了太多时间试图找出错误,我知道有经验的程序员可以在一瞬间解决这个问题,所以有人可以帮忙。

以下是错误终端吐出的完整列表

 line 8, in channel_list_scrape
    list_channel_attr = youtube.channels.list(id=youtube_channel).execute()
AttributeError: 'function' object has no attribute 'list'

line 11, in <module>
    channel_list_scrape(youtube_channel = 'CNN')

代码:

    from apiclient.discovery import build
    import csv


     def channel_list_scrape(youtube_channel):
         DEVELOPER_KEY = 'string_would_go_in_here'
         youtube = build('youtube', 'v3', developerKey=DEVELOPER_KEY)
         list_channel_attr = youtube.channels.list(id=youtube_channel).execute()
         return(list_channel_attr)

      channel_list_scrape(youtube_channel = 'CNN')

1 个答案:

答案 0 :(得分:0)

我不知道你正在使用的api的具体细节,但是从追溯中听起来你需要做这样的事情:

list_channel_attr = youtube.channels().list(id=youtube_channel).execute()

从它看起来如何,你想要调用list()方法返回youtube.channels()返回的任何对象。你现在正在做的是在list()方法对象本身上调用youtube.channels,而不是在方法返回的对象上调用它。

要进一步说明,请观察以下交互式会话以及评论中的解释:

In [1]: def foo():  # This function returns a list
   ...:     return [1, 2, 3]
   ...:     
   ...: 

In [2]: [1, 2, 3].pop()  # lists have a pop method
Out[2]: 3

In [3]: foo().pop()  # so the return value of the function also has a pop method
Out[3]: 3

In [4]: foo.pop()  # but the function itself does not have a pop method
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-4-20ec23cbc1ac> in <module>()
----> 1 foo.pop()

AttributeError: 'function' object has no attribute 'pop'