Из справочника Python:
Каждый объект имеет идентификатор, тип и значение.
Операторы сравнения реализуют определенное представление о значении объекта. Их можно рассматривать как определение значения объекта косвенно, посредством реализации сравнения.
И Лучано Рамальо в своей книге "Fluent Python" сказано, что (на стр.206 второго изд.):
Оператор == сравнивает значения объектов (данных, которые они содержат), а is сравнивает их идентичность.
Итак, значение объекта — это данные, которые используется методом __eq__() этого объекта. Но есть классы, которые не переопределяют этот метод. Какова ценность экземпляра такого класса?
Например, допустим, у нас есть некоторая функция f — экземпляр встроенной функции сорт. Этот класс не переопределяет __eq__(), поэтому в этом случае оператор == просто сравнивает идентификаторы своих операндов (если оба операнда являются функциями). Но я не думаю, что мы можем сказать, что значение объекта f совпадает с идентификатором f. Действительно, люди говорят, что пользовательские функции — это изменяемые объекты, другими словами, их значение можно изменить. Но невозможно изменить личность f (или любого другого объекта). Итак, значение f не равно id(f). Его следует определить по-другому, и я надеюсь, что его можно определить правильно (если не в Python вообще, то хотя бы в CPython).
Здесь, на stackoverflow, я видел некоторые определения функционального объекта значение, например здесь:
Это «значение» — это набор других значений, которых достаточно для определения точно такой же функции.
Но я не уверен, что это «каноническое» определение.
Подробнее здесь: https://stackoverflow.com/questions/791 ... -an-object
Если класс не перегружает оператор ==, то каково значение объекта этого класса? ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Если класс не перегружает оператор ==, то каково значение объекта этого класса?
Anonymous » » в форуме Python - 0 Ответы
- 10 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Если класс не перегружает оператор ==, то каково значение объекта этого класса?
Anonymous » » в форуме Python - 0 Ответы
- 12 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Если класс не перегружает оператор ==, то каково значение объекта этого класса?
Anonymous » » в форуме Python - 0 Ответы
- 8 Просмотры
-
Последнее сообщение Anonymous
-
-
-
System.String не перегружает оператор += Но конкатенация строк работает. Как?
Anonymous » » в форуме C# - 0 Ответы
- 13 Просмотры
-
Последнее сообщение Anonymous
-