При сравнении
Так как
b == a
, где b
— это список, а a
— это экземпляр MyList
, интерпретатор сначала вызывает list.__eq__(b, a)
, и если результат — NotImplemented
, тогда он вызывает MyList.__eq__(a, b)
.Так как
MyList.__eq__
определён и всегда возвращает True
, то сравнения b == a возвращаетт True.🔍Что выведет код?
Anonymous Quiz
23%
<function <lambda> at 0x1027200e0>
27%
[1, 4, 9, 16, 25, 36, 49, 64]
33%
[8, 8, 8, 8, 8]
17%
Error
В этом примере все лямбда-функции в списке
functions
замыкают переменную i
, которая после завершения цикла имеет значение 4. Поэтому при вызове каждой функции с аргументом 2 вычисляется 2 * 4 = 8.def на самом деле представляет собой присваивание. В примере операторы def присваивают объекты функций именам setdata и display в области видимости оператора class, а потому генерируют атрибуты, присоединяемые к классу — FirstClass.setdata и FirstClass.display. В действительности любое имя, присвоенное на верхнем уровне вложенного блока класса, становится атрибутом этого класса.
Мы тут с опросом про работодателей. Какой рэдфлаг хуже?
Anonymous Poll
14%
Переработки
13%
Серая зарплата
34%
Задержки зарплаты
40%
Токсичная атмосфера
Если добавить атрибут .data в вывод display, то выведется «Москва»:
class MyClass():
def setdata(self, value):
def display(self):
print(
x = MyClass()
x.display() # Москва
Чем классы в Python отличаются от методов?
Anonymous Quiz
9%
Классы могут возвращать значения, а методы — нет
78%
Классы могут быть многоуровневыми, а методы — нет
7%
Методы могут содержать атрибуты, а классы — нет
7%
Методы поддерживают наследование, а классы — нет
Как получить список базовых (родительских) классов класса Second?
Anonymous Quiz
24%
Second.__bases__
48%
Second.__superclass__
20%
Second.__dict__
8%
Никак