Tenga en cuenta que si divide las variables en líneas, debe usar barras invertidas para ajustar las nuevas líneas.
with A() as a, \
B() as b, \
C() as c:
doSomething(a,b,c)
Los paréntesis no funcionan, ya que Python crea una tupla en su lugar.
with (A(),
B(),
C()):
doSomething(a,b,c)
Como las tuplas carecen de un __enter__
atributo, obtienes un error (no descriptivo y no identifica el tipo de clase):
AttributeError: __enter__
Si intenta utilizarlo as
entre paréntesis, Python detecta el error en el momento del análisis:
with (A() as a,
B() as b,
C() as c):
doSomething(a,b,c)
Error de sintaxis: sintaxis invalida
https://bugs.python.org/issue12782 parece estar relacionado con este problema.