Python, объедините длинный путь компоновщика и комментарии [дубликаты]

Возможный дубликат:
Как разбить строку связанных методов в Python?

Следующий вопрос касается стиля кода Python и может быть дизайном повторно используемой библиотеки. Итак, у меня есть конструктор, который связывает создание графика в одну большую строку следующим образом:

graph.builder() \
        .push(root) \
        .push(n1) \
        .arc(arcType) \ #root-arc-n1 error is there
        .push(n2) \
...

В строке №4 я получаю ошибку о неправильном символе (#). Итак, общий вопрос, как создать хорошо прокомментированный код на длинном пути компоновщика. Также в качестве хорошего ответа я буду признателен за предложение об изменениях в конструкторе, чтобы разрешить комментарии для уточнения кода.


person Dewfy    schedule 10.11.2012    source источник


Ответы (3)


Заключение всего этого в круглые скобки заставляет python рассматривать его как одно выражение:

(graph.builder()
    .push(root)
    .push(n1)
    .arc(arcType) #root-arc-n1 error is there
    .push(n2)
)

У меня может возникнуть соблазн переработать ваш метод компоновщика, чтобы разрешить:

graph.builder(lambda g: g
    .push(root)
    .push(n1)
    .arc(arcType) #root-arc-n1 error is there
    .push(n2)
)

Просто чтобы сделать расположение скобок более разумным

person Eric    schedule 10.11.2012

Лучше всего это сделать, используя промежуточные переменные:

builder = graph.builder()
builder = builder.push(root).push(n1)
builder = builder.arc(arcType)  #root-arc-n1 error is there
builder = builder.push(n2). # ... etc. ...
person Martijn Pieters    schedule 10.11.2012

Выглядит не очень хорошо, но позволяет использовать встроенные комментарии:

graph.builder(
    ).push(root
    ).push(n1
    ).arc(arcType #root-arc-n1 error is there
    ).push(n2)

http://www.python.org/dev/peps/pep-0008/#maximum-line-length

person mpaolini    schedule 10.11.2012