2016-10-21 17 views
0

下記のプログラムの実行中にこのエラーが発生します。 CentOSでこのコードを実行しています。私は何が問題なのか分からない!Python TypeError in my-code

私はこのエラーでこだわっている:TypeError: put_photo() takes at most 3 arguments (4 given)

#!/usr/bin/python: 
# -*- coding: utf-8 -*- 
from sys import argv 
#import tweepy 
import facebook 

def main(): 
    cfg = { 
    "page_id"  : "XXXX", 
    "access_token" : "XXXX" 
    } 
    api = get_api(cfg) 
    msg = "Hello, world!" 
    status = api.put_wall_post(msg) 

def get_api(cfg): 
    graph = facebook.graphapi(cfg['access_token']) 
    resp = graph.get_object('me/accounts') 
    page_access_token = None 
    for page in resp['data']: 
    if page['id'] == cfg['page_id']: 
     page_access_token = page['access_token'] 
    graph = facebook.GraphAPI(page_access_token) 
    ''' 
    caption = "இன்ரைய நாள் காட்டி #tamilcalender (©belongs to watermarked party)" 
    albumid = '' 
    with open(image.jpg,"rb") as image: 
      posted_image_id = graph.put_photo(image, caption, albumid) ''' 
    return graph 
if __name__ == "__main__": 
    main() 
+1

'graph.put_photo(image、caption、albumid)'には4つの引数があります。それはそれのようには見えませんが、それは最初のものが隠されているからです( '自己 ')。 1つのメソッドに多すぎるものを渡しています。 – byxor

+0

あなたは 'put_photo'の呼び出しで4つの引数を渡しています。メソッドがアタッチされているオブジェクト( 'graph')は、伝統的に' self'と呼ばれる最初の引数として自動的に渡されます。それから3つを合計して合計4つを渡します。そのメソッドのドキュメントや 'help()'を見て、それを呼び出す方法を見つけてください。 – kindall

答えて

1

put_photo APIは2つの引数を取ります。

  • image - アップロードするイメージを表すファイルオブジェクト。
  • album_path - 画像をアップロードする場所を表すパス。デフォルトでは、Facebookアプリケーションごとにカスタムアルバムを作成/使用する/ me/photosになります。 image, caption, albumid -

Please check this link for more info.

は、次の3つのarugumentsを渡しています。 @kindall@BrandonIbbotsonによって上記のコメントで説明したようにこれら三つとともに

は、1つの必須引数がselfに関連している渡されます。

上記の例のリンクをチェックし、2つの有効な引数を渡すだけです。