Как работать с методом, который принимает 1 позиционный аргумент, но 2 были заданы в функциональном коде?

#python-3.x #google-calendar-api

#python-3.x #google-calendar-api

Вопрос:

Я создал очень маленькую функцию для очистки календаря Google с помощью API. API в целом работает.Ссылочный код со страниц разработчиков Google выглядит так:

 service.calendars().clear('primary').execute()
 

и моя функция такова:

 def clear_gcal(service): 
    someCal = '''my_calendar_address''' 
    service.calendars().clear(someCal).execute()
    print("Some Google Cal cleared")
 

Запуская это с помощью служебной переменной, которая работает (я использую ее для добавления в календарь тоже без ошибок, я получаю «TypeError: метод () принимает 1 позиционный аргумент, но было задано 2».Все решения, которые я нахожу, используют self в ООП, но мой код просто функциональный (и я предпочитаю его таким образом для этого), так как я могу справиться с этим, казалось бы, довольно распространенным типом ошибки? Спасибо,

 Traceback (most recent call last):

File "<ipython-input-87-d7bf7ff34210>", line 1, in <module> runfile('C:/Users/b017646/ExportCal/main.py', wdir='C:/Users/b017646/ExportCal')

File "C:ProgramDataAnaconda3libsite-packagesspyder_kernelscustomizespydercustomize.py", line 827, in runfile execfile(filename, namespace)

File "C:ProgramDataAnaconda3libsite-packagesspyder_kernelscustomizespydercustomize.py", line 110, in execfile exec(compile(f.read(), filename, 'exec'), namespace)

File "C:/Users/b017646/ExportCal/main.py", line 17, in <module> gcal.clear_gcal(service)

File "C:Usersb017646ExportCalgcal.py", line 48, in clear_gcal service.calendars().clear(deaCal).execute()

TypeError: method() takes 1 positional argument but 2 were given
 

GregersDK

Комментарии:

1. Сначала разделите его на несколько строк с одним вызовом метода в каждой строке, чтобы вы могли видеть, какой вызов метода вызывает ошибку.

Ответ №1:

Проблема:

Вы неправильно указываете calendarId параметр.

Решение:

Вы должны сделать это вместо этого:

 service.calendars().clear(calendarId='primary').execute()
 

Ссылка: