Форматирование нескольких строк в Python с помощью вызовов методов - PullRequest
0 голосов
/ 04 июня 2018

Какой принятый стиль в Python для форматирования нескольких строк кода, которые являются вызовами методов?

my_obj.call(x,y).multiple(*args).methods([1,2,3])

С неявными переносами строк после скобок / скобок это будет выглядеть так:

my_obj.call(
  x, y).multiple(
  *args).methods(
  [1,2,3])

Что немного уродливо и не совсем соответствует типичному стилю Python.

  1. Допустимо ли форматировать несколько вызовов методов с обратной косой чертой \?

    my_obj.call(x, y) \
      .multiple(*args) \
      .methods([1,2,3])
    
  2. Если это допустимо, то также допустимо ли использовать после строки два пробела для вызова метода или не должно быть отступа?

Ответы [ 3 ]

0 голосов
/ 06 июня 2018

Альтернативой трейлингу \ является использование круглых скобок:

(my_obj.call(x, y)
  .multiple(*args)
  .methods([1,2,3]))
0 голосов
/ 15 июня 2018

Значение pep8 будет равно

temp_obj = my_obj.call(x,y)
temp_obj = temp_obj.multiple(*args)
temp_obj.methods([1,2,3])

Или, если первая строка помещается в одну строку, т.е. < 79 символов.

temp_obj = my_obj.call(x,y).multiple(*args)
temp_obj.methods([1,2,3])
0 голосов
/ 04 июня 2018

Я отформатирую его так:

my_obj.call(
    x, y
).multiple(
    *args
).methods(
    [1, 2, 3]
)

Или используйте \:

my_obj.call(x, y) \
    .multiple(*args) \
    .methods([1, 2, 3])

Отступ должен совпадать с отступом блока, который обычно составляет 4 пробела.

...