[英]I don't understand why Python raises the error 'TypeError: bad operand type for unary -: 'list'' in this script
[英]I don't understand this Python TypeError
我正在嘗試使用Linode API和linode-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.