簡體   English   中英

TypeError:generator()缺少1個必需的位置參數:“ json”

[英]TypeError: generator() missing 1 required positional argument: 'json'

錯誤:

Traceback (most recent call last):
  File "...", line ..., in main
    output_call = output.generator(json_text)
TypeError: generator() missing 1 required positional argument: 'json'

我的代碼:

class TOTALTIME:
    def generator(self, json):
        self._json = json
        print('{} minutes'.format(int(self._json['route']['time']/60)))

我的for循環遍歷通過字典制作的類列表。

for output in output_list:
    output_call = output.generator(json_text)
    print(output_call)

這是創建類的函數:

def list_of_outputs(n_outputs: int) -> 'values':
    d = {}
    e = {'STEPS': output_classes.STEPS,
     'LATLONG': output_classes.LATLONG,
     'TOTALTIME': output_classes.TOTALTIME,
     'TOTALDISTANCE': output_classes.TOTALDISTANCE,
     'ELEVATION': output_classes.ELEVATION }

    for output in range(n_outputs):
        add_output = input()
        if add_output in e.keys():
            d.update(e)
    return d.values()

您正在調用未綁定的函數 ,而不是綁定的方法。 您需要創建實例 ,以使類上的函數綁定到某些對象並提供self參數。

換句話說,您的output_list包含TOTALTIME條目,而不是TOTALTIME()條目:

>>> class TOTALTIME:
...     def generator(self, json):
...         self._json = json
...         print('{} minutes'.format(int(self._json['route']['time']/60)))
...
>>> TOTALTIME.generator({'route': {'time': 360}})
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: generator() missing 1 required positional argument: 'json'
>>> TOTALTIME().generator({'route': {'time': 360}})
6 minutes

請注意()調用以創建實例。

暫無
暫無

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

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