#python #coding-style
#python #стиль кодирования
Вопрос:
Есть ли какие-либо стилистические табу или другие недостатки в реализации тривиальных методов путем присвоения атрибутам класса? Например, как bar
и baz
ниже, в отличие от более привычных foo
.
class MyClass(object):
def hello(self):
return 'hello'
def foo(self):
return self.hello()
bar = lambda self: self.hello()
baz = hello
Я нахожу себя соблазненным очевидной экономией подобных вещей:
__str__ = __repr__ = hello
Ответ №1:
Лично я думаю, что такие вещи, как
__str__ = __repr__ = hello
все в порядке, но
bar = lambda self: self.hello()
это зло. Вы не можете легко присвоить лямбде строку docstring, и .func_name
атрибут будет иметь бессмысленное значение <lambda>
. Обе эти проблемы не возникают для первой строки.
Ответ №2:
В общем, совершенно нормально присваивать методам другие имена. Однако во многих случаях это hello
должно было быть __str__
в первую очередь (если hello
не возвращает строку в определенном формате или около того).