Подтвердить что ты не робот

Неправильно ли использовать встроенное имя функции в качестве атрибута или идентификатора метода?

Я знаю, что никогда не использовать встроенные имена функций в качестве переменных идентификаторов.

Но есть ли причины не использовать их в качестве атрибутов или идентификаторов методов?

Например, безопасно ли писать my_object.id = 5 или определять метод экземпляра dict в моем собственном классе?

4b9b3361

Ответ 1

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

Еще один плохой эффект заключается в том, что встроенные встроенные шаблоны смущают синтаксические выделения в большинстве редакторов, ориентированных на python (vi, emacs, pydev, idle и т.д.). Также некоторые инструменты lint будут предупреждать об этой практике.

Ответ 2

Да, это плохая практика. Это может не сразу нарушить что-либо для вас, но оно все еще ухудшает читаемость кода.

Для выборочной цитаты из PEP20:

Красивая лучше, чем уродливая.
Простой лучше, чем сложный.
Показатели удобочитаемости.
Если внедрение трудно объяснить, это плохая идея.

Увидев вызов myobject.dict(), было бы естественно предположить, что он вернется myobject.__dict__ или что myobject.id() возвращает то же самое, что и id(myobject)

Возможно, они узнают, что они ошибаются; но это потребует времени и усилий и, вероятно, приведет к некоторым ошибкам, пока они это выяснят. Вызов вашего атрибута myobject.object_id_number намного длиннее, но дает более четкое представление о том, что он отличается от id(myobject)

Ответ 3

Нет, это хорошо. Поскольку требуется ссылка на объект, нет способа заставить их теневое встроенное.