и посмотреть медиа
Data Science - interviews
и посмотреть медиа
Data Science interviews.
AI bot for text-to-speech and voice cloning in Telegram. Create audio using neural network quickly and easily.
Interview questions on Data Science.
🤔 Какие магические методы в python знаешь? Магические методы (или дандер-методы, от *double underscore*) в Python — это специальные методы, которые начинаются и заканчиваются двумя подчеркиваниями (__). Они позволяют переопределять поведение объектов и интегрироваться с внутренними механизмами языка. 🚩Основные магические методы 🟠Инициализация и представление объектов __init__(self, ...) — конструктор, вызывается при создании объекта. __new__(cls, ...) — создаёт новый объект перед __init__. __del__(self) — деструктор, вызывается при удалении объекта. __repr__(self) — строковое представление объекта для отладки (repr(obj)). __str__(self) — строковое представление объекта для пользователя (str(obj)). class Person: def __init__(self, name, age): self.name = name self.age = age def __repr__(self): return f"Person('{self.name}', {self.age})" def __str__(self): return f"{self.name}, {self.age} лет" p = Person("Иван", 30) print(p) # Иван, 30 лет (вызывается __str__) print(repr(p)) # Person('Иван', 30) (вызывается __repr__) 🟠Операторы сравнения __eq__(self, other) — == __ne__(self, other) — != __lt__(self, other) — = class Number: def __init__(self, value): self.value = value def __eq__(self, other): return self.value == other.value def __lt__(self, other): return self.value < other.value a = Number(5) b = Number(10) print(a == b) # False print(a < b) # True 🟠Арифметические операторы __add__(self, other) — + __sub__(self, other) — - __mul__(self, other) — * __truediv__(self, other) — / __floordiv__(self, other) — // __mod__(self, other) — % __pow__(self, other) — ** class Vector: def __init__(self, x, y): self.x = x self.y = y def __add__(self, other): return Vector(self.x + other.x, self.y + other.y) def __repr__(self): return f"Vector({self.x}, {self.y})" v1 = Vector(1, 2) v2 = Vector(3, 4) print(v1 + v2) # Vector(4, 6) 🟠Доступ к атрибутам __getattr__(self, name) — вызывается при обращении к несуществующему атрибуту. __setattr__(self, name, value) — вызывается при изменении атрибута. __delattr__(self, name) — вызывается при удалении атрибута. class Demo: def __getattr__(self, name): return f"Атрибут {name} не найден" obj = Demo() print(obj.some_attr) # Атрибут some_attr не найден 🟠Итерация и контейнеры __iter__(self) — возвращает итератор. __next__(self) — следующий элемент (используется с __iter__). __getitem__(self, index) — доступ по индексу (obj[index]). __setitem__(self, index, value) — установка значения по индексу. __delitem__(self, index) — удаление элемента по индексу. __contains__(self, item) — оператор in. class CustomList: def __init__(self, items): self.items = items def __getitem__(self, index): return self.items[index] def __setitem__(self, index, value): self.items[index] = value lst = CustomList([1, 2, 3]) print(lst[1]) # 2 lst[1] = 10 print(lst[1]) # 10 🟠Контекстный менеджер (`with`) __enter__(self) — выполняется при входе в with. __exit__(self, exc_type, exc_val, exc_tb) — выполняется при выходе из with. class FileManager: def __init__(self, filename): self.filename = filename def __enter__(self): self.file = open(self.filename, 'w') return self.file def __exit__(self, exc_type, exc_val, exc_tb): self.file.close() with FileManager('test.txt') as f: f.write('Hello, world!') Ставь 👍 и забирай 📚 Базу знаний
Открыть канал и посмотреть медиаOnly registered users can share their opinion.
Be the first to share your impression of this resource!