Python: задачки и вопросы
Open in Telegram
Вопросы и задачки для подготовки к собеседованиям и прокачки навыков Разместить рекламу: @tproger_sales_bot Правила общения: https://tprg.ru/rules Другие каналы: @tproger_channels Другие наши проекты: https://tprg.ru/media
Show more7 128
Subscribers
-424 hours
+87 days
-230 days
Posts Archive
Как получить список базовых (родительских) классов класса Second?
Код выведет 'Bob', потому что res — это класс, и ему присваивается атрибут name на уровне класса (res.name = 'Bob'). Затем создаётся экземпляр x = res(), у которого нет собственного атрибута name. При вызове x.name интерпретатор ищет атрибут сначала в экземпляре x, затем в его классе res. Поскольку у res есть атрибут name, возвращается 'Bob'. Это пример наследования атрибутов экземпляром от класса.
Выводится тип объекта и его адрес в памяти, потому что в методе display() вы печатаете сам объект (self), а не его атрибут data.
Если добавить атрибут .data в вывод display, то выведется «Москва»:
class MyClass():
def setdata(self, value):
self.data = value
def display(self):
print(self.data)
x = MyClass()
x.data = 'Москва'
x.display() # Москва
Мы тут с опросом про работодателей. Какой рэдфлаг хуже?
Как и все составные операторы, оператор class начинается со строки заголовка с именем класса, после чего следует тело с одним или несколькими вложенными операторами, (обычно) набранными с отступом. В приведенном примере вложенными операторами являются def; они определяют функции, которые реализуют поведение класса, предназначенное для экспортирования.
def на самом деле представляет собой присваивание. В примере операторы def присваивают объекты функций именам setdata и display в области видимости оператора class, а потому генерируют атрибуты, присоединяемые к классу — FirstClass.setdata и FirstClass.display. В действительности любое имя, присвоенное на верхнем уровне вложенного блока класса, становится атрибутом этого класса.
Являются ли атрибутами функции, определенные внутри класса?
В этом примере все лямбда-функции в списке
functions замыкают переменную i, которая после завершения цикла имеет значение 4. Поэтому при вызове каждой функции с аргументом 2 вычисляется 2 * 4 = 8.При сравнении
b == a, где b — это список, а a — это экземпляр MyList, интерпретатор сначала вызывает list.__eq__(b, a), и если результат — NotImplemented, тогда он вызывает MyList.__eq__(a, b).
Так как MyList.__eq__ определён и всегда возвращает True, то сравнения b == a возвращаетт True.sum() работает как со списками, так и с генераторами, и результат — 0 + 1 + 2 == 3.
Available now! Telegram Research 2025 — the year's key insights 
