Использование kwargs для управления потоком внутри метода - PullRequest
0 голосов
/ 05 мая 2019

Я пытаюсь написать метод внутри класса, где тот же метод может использоваться для конечной точки, параметры которой изменяются в зависимости от года / месяца / дня. Год является обязательным параметром, а месяц / день необязательным. Существует ли механизм для отслеживания количества передаваемых аргументов и потока управления внутри метода?

 # Global var
URL = 'http://posts/archive/'


# trying to use *kwargs for mn and day. year is required/positional.
get_records_arch(year, mn, dy):

if year only is passed:
    API_ENDPOINT = 'http://posts/archive/{year}/'.format(year=YEAR)
else if 'year and mn' are passed:
    API_ENDPOINT = 'http://posts/archive/{year}/{month}/'.format(year=YEAR, month=MON)
else
    API_ENDPOINT = 'http://posts/archive/{year}/{month}/{day}/'.format(year=YEAR, month=MON, day=DAY)

1 Ответ

1 голос
/ 05 мая 2019

Дайте mn и dy значениям по умолчанию None, затем проверьте, имеет ли каждое значение, отличное от None, прежде чем пытаться их использовать. Обратите внимание, что dy полностью игнорируется, если mn не является None.

def get_records_arch(year, mn=None, dy=None):
    API_ENDPOINT = 'http://posts/archive/{}/'.format(year)
    if mn is not None:
        API_ENDPOINT += '{}/'.format(mn)
        if dy is not None:
            API_ENDPOINT += '{}/'.format(dy)

    ...
...