簡體   English   中英

我不明白這個Python TypeError

[英]I don't understand this Python TypeError

我正在嘗試使用Linode APIlinode-python SDK來管理我的Linode服務器。 但是,當我運行linode-disk-list()命令時,我得到一個我不明白的TypeError。

這就是linode-python API如何定義我正在調用的方法。 如您所見,需要LinodeID。

@__api_request(required=['LinodeID'],
                 returns=[{u'CREATE_DT': u'YYYY-MM-DD hh:mm:ss.0',
                           u'DISKID': 'Disk ID',
                           u'ISREADONLY': '0 or 1',
                           u'LABEL': 'Disk label',
                           u'LINODEID': 'Linode ID',
                           u'SIZE': 'Size of disk (MB)',
                           u'STATUS': 'Status flag',
                           u'TYPE': "in ['ext3', 'swap', 'raw']",
                           u'UPDATE_DT': u'YYYY-MM-DD hh:mm:ss.0'}])
  def linode_disk_list(self, request):
    """Lists all disk images associated with a Linode."""
    pass

我的代碼根據SDK的說明創建了Linode Python API的實例,然后調用linode_disk_list方法:

from linode import api as linode_api

api = linode_api.Api(<my_api_key>)
linode_id = 1800300
disks = api.linode_disk_list(linode_id)

我的代碼生成此錯誤:

TypeError: wrapper() takes exactly 1 argument (2 given)

我知道我正在正確創建api實例,因為我在調用磁盤列表方法之前使用它來成功調用linode_ip_list方法。

只是為了看看會發生什么,如果我不提供linode_id參數,我會收到此錯誤:

linode.api.MissingRequiredArgument: 'LinodeID'

如果我用linode ID調用該方法,錯誤說我給它兩個參數。 但如果我不給它任何論據,它說我錯過了一個論點。 此時,我不確定LinodeID應該是整數還是字符串,但在任何一種情況下我都會得到相同的錯誤。 如何調用此方法以便不獲取TypeError參數?

謝謝!

@__api_request裝飾器為每個參數獲取一個列表:

def __api_request(required=[], optional=[], returns=[]):
    """Decorator to define required and optional parameters"""
    for k in required:
      [...]

但是,你傳遞一個整數

linode_id = 1800300
disks = api.linode_disk_list(linode_id)

並且您收到有關參數數量的沖突錯誤消息,因為wrapper()方法接受任意數量的關鍵字參數

 def wrapper(self, **kw):

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM