Если класс не перегружает оператор ==, то каково значение объекта этого класса?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Если класс не перегружает оператор ==, то каково значение объекта этого класса?

Сообщение Anonymous »

Из справочника Python:

Каждый объект имеет идентификатор, тип и значение.


Операторы сравнения реализуют определенное представление о значении объекта. Их можно рассматривать как определение значения объекта косвенно, посредством реализации сравнения.

И Лучано Рамальо в своей книге "Fluent Python" сказано, что (на стр.206 второго изд.):

Оператор == сравнивает значения объектов (данных, которые они содержат), а is сравнивает их идентичность.

Итак, значение объекта — это данные, которые используется методом __eq__() этого объекта. Но есть классы, которые не переопределяют этот метод. Какова ценность экземпляра такого класса?
Например, допустим, у нас есть некоторая функция f — экземпляр встроенной функции сорт. Этот класс не переопределяет __eq__(), поэтому в этом случае оператор == просто сравнивает идентификаторы своих операндов (если оба операнда являются функциями). Но я не думаю, что мы можем сказать, что значение объекта f совпадает с идентификатором f. Действительно, люди говорят, что пользовательские функции — это изменяемые объекты, другими словами, их значение можно изменить. Но невозможно изменить личность f (или любого другого объекта). Итак, значение f не равно id(f). Его следует определить по-другому, и я надеюсь, что его можно определить правильно (если не в Python вообще, то хотя бы в CPython).
Здесь, на stackoverflow, я видел некоторые определения функционального объекта значение, например здесь:

Это «значение» — это набор других значений, которых достаточно для определения точно такой же функции.

Но я не уверен, что это «каноническое» определение.

Подробнее здесь: https://stackoverflow.com/questions/791 ... -an-object
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»