почему input ('str' + int) работает, а print (int + 'str') - нет? - PullRequest
1 голос
/ 30 апреля 2020

почему ввод ('str' + int) работает, а печать (int + 'str') не

Я использовал x = ("enter" + t + "th value") '' 'здесь type (t) = int '' '

, и это сработало, но я использовал print (230 + "k $") и показывает тип ошибки: неподдерживаемые типы операндов для +:' int 'и' str '

почему сработала прежняя строка кода /

1 Ответ

1 голос
/ 30 апреля 2020

Основное различие заключается в том, правильно ли определен оператор + для этого типа данных. Если мы рассмотрим тип str, то имеет смысл реализовать сложение для строк таким образом, чтобы добавление какого-либо другого типа данных имело эффект добавления его в виде строки. Чтобы показать, как может выглядеть чрезмерно упрощенный код для этого, можно сказать

class str:
    def __add__(self, num: int) -> str:
        return self + str(num)

, что имеет смысл. Теперь, если мы рассмотрим, как сложение может выглядеть для целого числа, то гораздо меньше смысла думать о добавлении строки. Численно, если у нас есть число 5, а затем ваш учитель математики сказал: «Хорошо, класс, теперь добавьте слово« foobar »к числу 5», вы не будете знать, что делать. По сути, это идея перегрузки операторов в языке программирования; на самом деле, проблема, которую вы здесь изложили, является одной из самых распространенных жалоб на язык Javascript, потому что люди не учитывают логические значения c, стоящие за реализацией арифметических c операторов для разных типов данных.

edit: мне было указано, что python даже не позволяет добавлять int s к str s, поэтому моя точка зрения для Python немного не совпадает; Тем не менее, я надеюсь, что понятие остается для объектно-ориентированных языков в целом.

...