Telegram Group & Telegram Channel
🧩 Задача для разминки

Что выведет этот код? Попробуй догадаться без запуска.


class Sneaky:
def __eq__(self, other):
print("Comparing!")
return True

a = Sneaky()
b = [a]

print(a in b)
print(a == b[0])
print(b.count(a))


🤔 Подумай: сколько раз вызовется eq?

🎯 Разбор:

print(a in b)
🔍 Проверка a in b вызывает b.__contains__(a), который по умолчанию использует ==.
👉 Вызовется eq, будет True.

print(a == b[0])
🔍 Прямое сравнение — снова eq.

print(b.count(a))
🔍 list.count сравнивает каждый элемент с ==. В нашем списке один элемент — a.
👉 Опять вызывается eq.

💥 Вывод будет:


Comparing!
True
Comparing!
True
Comparing!
1


📌 Вывод: __eq__ сработал 3 раза, и каждый раз напечатал "Comparing!".

🧠 Уловка: Python-списки используют ==, даже если это один и тот же объект! Да, a == a всё равно вызовет __eq__, если он определён.

⚠️ Фишка для интервью:
Можно подменить поведение ==, но is (сравнение идентичности) всегда быстрее и не вызывает магии.



@Python_Community_ru



tg-me.com/Python_Community_ru/2683
Create:
Last Update:

🧩 Задача для разминки

Что выведет этот код? Попробуй догадаться без запуска.


class Sneaky:
def __eq__(self, other):
print("Comparing!")
return True

a = Sneaky()
b = [a]

print(a in b)
print(a == b[0])
print(b.count(a))


🤔 Подумай: сколько раз вызовется eq?

🎯 Разбор:

print(a in b)
🔍 Проверка a in b вызывает b.__contains__(a), который по умолчанию использует ==.
👉 Вызовется eq, будет True.

print(a == b[0])
🔍 Прямое сравнение — снова eq.

print(b.count(a))
🔍 list.count сравнивает каждый элемент с ==. В нашем списке один элемент — a.
👉 Опять вызывается eq.

💥 Вывод будет:


Comparing!
True
Comparing!
True
Comparing!
1


📌 Вывод: __eq__ сработал 3 раза, и каждый раз напечатал "Comparing!".

🧠 Уловка: Python-списки используют ==, даже если это один и тот же объект! Да, a == a всё равно вызовет __eq__, если он определён.

⚠️ Фишка для интервью:
Можно подменить поведение ==, но is (сравнение идентичности) всегда быстрее и не вызывает магии.



@Python_Community_ru

BY Python Community


Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283

Share with your friend now:
tg-me.com/Python_Community_ru/2683

View MORE
Open in Telegram


Python Community Telegram | DID YOU KNOW?

Date: |

Among the actives, Ascendas REIT sank 0.64 percent, while CapitaLand Integrated Commercial Trust plummeted 1.42 percent, City Developments plunged 1.12 percent, Dairy Farm International tumbled 0.86 percent, DBS Group skidded 0.68 percent, Genting Singapore retreated 0.67 percent, Hongkong Land climbed 1.30 percent, Mapletree Commercial Trust lost 0.47 percent, Mapletree Logistics Trust tanked 0.95 percent, Oversea-Chinese Banking Corporation dropped 0.61 percent, SATS rose 0.24 percent, SembCorp Industries shed 0.54 percent, Singapore Airlines surrendered 0.79 percent, Singapore Exchange slid 0.30 percent, Singapore Press Holdings declined 1.03 percent, Singapore Technologies Engineering dipped 0.26 percent, SingTel advanced 0.81 percent, United Overseas Bank fell 0.39 percent, Wilmar International eased 0.24 percent, Yangzijiang Shipbuilding jumped 1.42 percent and Keppel Corp, Thai Beverage, CapitaLand and Comfort DelGro were unchanged.

Python Community from us


Telegram Python Community
FROM USA