python TypeError:未绑定的方法必须使用YouTubeService实例调用UpdateVideoEntry()

时间:2012-09-24 15:40:17

标签: python youtube

我正在尝试使用youtube api更新条目。这是我正在努力的错误:

  

Traceback(最近一次调用最后一次):文件“”,第1行,in          updated_entry = gdata.youtube.service.YouTubeService.UpdateVideoEntry(YTVentry.id)   TypeError:未绑定方法必须使用调用UpdateVideoEntry()   YouTubeService实例作为第一个参数(获得NoneType实例   代替)

这是我的代码:

    import gdata.youtube
    import gdata.youtube.service
    import gdata.youtube.data
client = gdata.youtube.service.YouTubeService()    
...
videos_feed = client.GetYouTubeVideoFeed(uri)
    for entry in videos_feed.entry:
    print entry.title.text
        YTentry = entry._GDataEntry__GetId
        YTVentry = gdata.youtube.YouTubeVideoEntry(YTentry)
        YTVentry.media.title = '09.11.2012 Hold me close'
        YTVentry.media.description = '09.11.2012 : Hold me close section'
        updated_entry = gdata.youtube.service.YouTubeService.UpdateVideoEntry(YTVentry.id)

根据谷歌gdata youtube文档:

  

要更新视频元数据,只需更新YouTubeVideoEntry对象即可   然后使用YouTubeService对象的UpdateVideoEntry方法。这个   method将包含更新的YouTubeVideoEntry作为参数   元数据。

提前感谢。

2 个答案:

答案 0 :(得分:1)

    updated_entry = gdata.youtube.service.YouTubeService.UpdateVideoEntry(YTVentry.id)

应该是

    updated_entry = client.UpdateVideoEntry(YTVentry.id)
  

gdata.youtube.service.YouTubeService.UpdateVideoEntry(YTVentry.id)   TypeError:未绑定方法必须使用调用UpdateVideoEntry()   YouTubeService实例作为第一个参数(获得NoneType实例   代替)

错误是抱怨,因为您尝试从类中调用UpdateVideoEntry而不是您创建的客户端对象。您已经创建了一个YouTubeService对象client,您需要使用该对象,而不是直接调用类的方法。

答案 1 :(得分:1)

您正在调用YouTubeService类上的方法,而不是该类的实例。换句话说,您应该像调用API的其他调用一样调用client.UpdateVideoEntry(...)而不是YouTubeService.UpdateVideoEntry(...)

文档甚至说你应该在YouTubeService对象上调用该方法,而不是在类上。

错误消息表明可以直接调用类方法,但必须将类的实例作为第一个参数传递。当您在实例上调用方法时,这是隐式完成的,但必须在调用类上的方法时显式完成。否则Python将不知道该方法应该在哪个实例上运行(即self是什么)。