Разговор как автор библиотеки:
я ожидаю окончательной версии, которая будет выпущена. Моя вера, как этот большей части сообщества Python, состоит в том, что 2.x продолжит быть доминирующей версией сроком на недели или месяцы. Это - много времени для выпуска хорошего, полируемого 3.x выпуск.
я буду поддерживать отдельный 2.x и 3.x ответвления. 2.x будет назад совместимо с 2,4, таким образом, я не могу использовать много необычного синтаксиса или новых возможностей в 2,6 / 3.0. Напротив, 3.x ответвление использует каждые из тех функций, которые приводят к более хорошему опыту для пользователя. Набор тестов будет изменен так, чтобы 2to3 работал на него, и я поддержу те же тесты для обоих ответвлений.
В основном он выполняет три действия:
. Equals (second)
Порядок не должен иметь значения , если оба значения имеют правильные реализации равенства, так как равенство должно быть реализовано так, чтобы x.Equals (y)
подразумевало y.Equals (x)
. Однако в офлайн-документации, которую я установил, указано, что first.Equals (second) (или objA.equals (objB), чтобы использовать реальное именование параметров). Интересно, что в онлайн-документации об этом не упоминается.
Просто чтобы сделать все это конкретным, реализация может выглядеть так:
public static bool Equals(object x, object y)
{
if (x == y) // Reference equality only; overloaded operators are ignored
{
return true;
}
if (x == null || y == null) // Again, reference checks
{
return false;
}
return x.Equals(y); // Safe as we know x != null.
}
По умолчанию эквивалентность объекта определяется адресом объекта в памяти. Если оба экземпляра имеют одинаковый адрес памяти, они равны.
Однако он может быть перегружен внутри объекта, чтобы разработчики могли сравнивать два объекта, которые не в одной и той же ячейке памяти и все еще остаются считается равным. Например, если у вас есть уровень доступа к данным, где каждый объект имеет свой идентификатор записи данных из базы данных, вы можете сравнивать равенство объектов на основе идентификатора.
Вы можете перегрузить операторы для реализации этой функции. .
Однако это может быть перегружено внутри объекта, чтобы разработчики могли сравнивать два объекта, которые не в одной и той же ячейке памяти, и при этом считаться равными. Например, если у вас есть уровень доступа к данным, где каждый объект имеет свой идентификатор записи данных из базы данных, вы можете сравнивать равенство объектов на основе идентификатора.
Вы можете перегрузить операторы для реализации этой функции. .
Однако это может быть перегружено внутри объекта, чтобы разработчики могли сравнивать два объекта, которые не в одной и той же ячейке памяти, и при этом считаться равными. Например, если у вас есть уровень доступа к данным, где каждый объект имеет свой идентификатор записи данных из базы данных, вы можете сравнивать равенство объектов на основе идентификатора.
Вы можете перегрузить операторы для реализации этой функции. .