I'm trying to write PEP-8 compliant code for a domestic project and I have a line with an f-string that is more than 80 characters long:
def __str__(self):
return f'{self.data} - {self.time},\nTags: {self.tags},\nText: {self.text}'
I'm trying to split it into different lines in the most Pythonic way but the only answer that actually works is an error for my linter.
Working code:
def __str__(self):
return f'{self.date} - {self.time},\nTags:' + \
f' {self.tags},\nText: {self.text}'
Output:
2017-08-30 - 17:58:08.307055,
Tags: test tag,
Text: test text
The linter thinks that I'm not respecting E122 from PEP-8, is there a way to get the string right and the code compliant?
From Style Guide for Python Code:
The preferred way of wrapping long lines is by using Python's implied line continuation inside parentheses, brackets and braces.
Given this, the following would solve your problem in a PEP-8 compliant way.
return (
f'{self.date} - {self.time}\n'
f'Tags: {self.tags}\n'
f'Text: {self.text}'
)
Python strings will automatically concatenate when not separated by a comma, so you do not need to explicitly call join()
.