fa
Feedback

فریب کلاهبرداران را نخورید! تل‌متریو این کانال‌ها را شناسایی و برچسب‌گذاری می‌کند 👉 برای مشاهده برچسب، اشتراک تهیه کنید

Python | Вопросы собесов

Python | Вопросы собесов

رفتن به کانال در Telegram

Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @sendme_ads

نمایش بیشتر

📈 تحلیل کانال تلگرام Python | Вопросы собесов

کانال Python | Вопросы собесов (@python_easy_ru) در بخش زبانی روسی بازیگری فعال است. در حال حاضر جامعه شامل 12 632 مشترک است و جایگاه 9 924 را در دسته فناوری و برنامه‌ها و رتبه 51 115 را در منطقه روسيا دارد.

📊 شاخص‌های مخاطب و پویایی

از زمان ایجاد در невідомо، پروژه رشد سریعی داشته و 12 632 مشترک جذب کرده است.

بر اساس آخرین داده‌ها در تاریخ 17 اکتبر, 2026، کانال فعالیت پایداری دارد. در ۳۰ روز گذشته تغییر اعضا برابر -111 و در ۲۴ ساعت گذشته برابر 0 بوده و همچنان دسترسی گسترده‌ای حفظ شده است.

  • وضعیت تأیید: تأیید نشده
  • نرخ تعامل (ER): میانگین تعامل مخاطب 6.00% است و در ۲۴ ساعت نخست پس از انتشار، محتوا معمولاً 4.29% واکنش نسبت به کل مشترکان کسب می‌کند.
  • دسترسی پست‌ها: هر پست به طور میانگین 758 بازدید دریافت می‌کند. در اولین روز معمولاً 542 بازدید جمع‌آوری می‌شود.
  • واکنش‌ها و تعامل: مخاطبان به‌طور فعال حمایت می‌کنند؛ میانگین واکنش به هر پست 2 است.
  • علایق موضوعی: محتوا بر موضوعات کلیدی مانند ставь, модуль, строка, docker, alice تمرکز دارد.

📝 توضیح و سیاست محتوایی

نویسنده این فضا را محل بیان دیدگاه‌های شخصی توصیف می‌کند:
“Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @sendme_ads”

به لطف به‌روزرسانی‌های پرتکرار (آخرین داده در تاریخ 18 اکتبر, 2026)، کانال همواره به‌روز و دارای دسترسی بالاست. تحلیل‌ها نشان می‌دهد مخاطبان به‌طور فعال با محتوا تعامل دارند و آن را به نقطه اثرگذاری مهم در دسته فناوری و برنامه‌ها تبدیل کرده‌اند.

12 632
مشترکین
اطلاعاتی وجود ندارد24 ساعت
-257 روز
-11130 روز
آرشیو پست ها
Что будет, если в родительских классах есть функции с одинаковым названием ? Спросят с вероятностью 3% Если у родительских классов есть функции с одинаковым названием, и они наследуются дочерним классом, возникает проблема множественного наследования. В этом случае Python использует порядок разрешения методов (Method Resolution Order, MRO), чтобы определить, какую версию функции использовать. Порядок разрешения методов (MRO) Использует алгоритм C3-линеаризации для определения MRO. Порядок MRO определяет, в каком порядке Python будет искать методы в иерархии классов. Вы можете увидеть MRO с помощью атрибута __mro__ или метода mro(). Рассмотрим пример, где два родительских класса имеют методы с одинаковым названием:
class A:
    def method(self):
        print("Method from class A")

class B:
    def method(self):
        print("Method from class B")

class C(A, B):
    pass

# Создание экземпляра класса C и вызов метода
c = C()
c.method()  # Выведет: Method from class A
В данном случае класс C наследует от A и B. При вызове метода method у экземпляра C Python сначала проверяет класс C, затем A (первый родитель) и только потом B (второй родитель). Таким образом, вызывается метод из класса A. Вы можете проверить порядок MRO следующим образом:
print(C.__mro__)
# Выведет: (<class '__main__.C'>, <class '__main__.A'>, <class '__main__.B'>, <class 'object'>)
Или с помощью метода mro():
print(C.mro())
# Выведет: [<class '__main__.C'>, <class '__main__.A'>, <class '__main__.B'>, <class 'object'>]
Влияние порядка наследования Если поменять порядок наследования в определении класса C, результат изменится:
class C(B, A):
    pass

c = C()
c.method()  # Выведет: Method from class B
Теперь метод из класса B будет вызван первым, так как B указан перед A в списке родительских классов. Можно также переопределить метод в дочернем классе, чтобы явно указать, какой метод использовать:
class C(A, B):
    def method(self):
        print("Method from class C")

c = C()
c.method()  # Выведет: Method from class C
Если нужно вызвать метод из конкретного родительского класса, можно использовать super():
class C(A, B):
    def method(self):
        super(A, self).method()  # Вызывает метод из класса B, так как он идет следующим после A в MRO

c = C()
c.method()  # Выведет: Method from class B
Если у родительских классов есть функции с одинаковым названием, использует порядок разрешения методов (MRO) для определения, какой метод вызывать. Вы можете проверить порядок MRO с помощью атрибута mro или метода mro(). Порядок наследования в определении класса влияет на MRO и на то, какой метод будет вызван. 👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1096 вопроса на Python разработчика. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых

Cамый простой способ изучить Java — залезть в голову профи Один из лучших айтишников России учит базе кодинга в Telegram. Даже гуманитарий поймёт, как создавать приложения, сайты, игры и чат-боты. Достаточно подписаться на «Секреты Java», где каждый день появляются гайды, готовые примеры кода и лучших практик. И всё это бесплатно — вместо сотен тысяч рублей за курсы. Стартовать в прибыльной профессии с нуля вы сможете гораздо проще! Теперь обучиться Java может каждый: @java_secrets

Как в python реализуются public метод ? Спросят с вероятностью 3% Методы по умолчанию являются публичными (public). Это означает, что они доступны для вызова из любого места, где доступен объект класса. Публичные методы предназначены для взаимодействия с объектом извне и предоставляют интерфейс для выполнения действий или получения данных. Пример:
class MyClass:
    def __init__(self, value):
        self.value = value

    def public_method(self):
        print(f"The value is {self.value}")

# Создание экземпляра класса
obj = MyClass(10)

# Вызов публичного метода
obj.public_method()  # Выведет: The value is 10
В этом примере: ✅Метод public_method является публичным, поскольку он определён без каких-либо специальных модификаторов и доступен извне. Как их отличить Принято использовать соглашения об именах для различения публичных и непубличных (приватных и защищённых) методов: 1️⃣Публичные методы: не имеют подчёркиваний в начале имени. 2️⃣Защищённые методы: имеют одно подчёркивание в начале имени (_method). 3️⃣Приватные методы: имеют два подчёркивания в начале имени (__method). Однако следует помнить, что эти соглашения носят рекомендательный характер и не обеспечивают жёсткого ограничения доступа, как в некоторых других языках программирования. Пример для всех типов методов
class MyClass:
    def __init__(self, value):
        self.value = value

    def public_method(self):
        print(f"Public method: The value is {self.value}")

    def _protected_method(self):
        print(f"Protected method: The value is {self.value}")

    def __private_method(self):
        print(f"Private method: The value is {self.value}")

    def access_private_method(self):
        self.__private_method()

# Создание экземпляра класса
obj = MyClass(10)

# Вызов публичного метода
obj.public_method()  # Выведет: Public method: The value is 10

# Вызов защищённого метода (можно, но не рекомендуется)
obj._protected_method()  # Выведет: Protected method: The value is 10

# Вызов приватного метода напрямую приведёт к ошибке
# obj.__private_method()  # АтрибутError

# Вызов приватного метода через публичный метод
obj.access_private_method()  # Выведет: Private method: The value is 10
Почему использовать публичные методы 1️⃣Интерфейс для взаимодействия: Публичные методы предоставляют способ взаимодействия с объектом, позволяя выполнять действия или получать данные. 2️⃣Инкапсуляция: Они помогают скрывать внутреннюю реализацию класса, предоставляя только необходимые для пользователя методы. Публичные методы доступны для вызова из любого места. Они предоставляют интерфейс для взаимодействия с объектом и обычно не имеют подчёркиваний в начале имени. 👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1096 вопроса на Python разработчика. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых

Что такое cls ? Спросят с вероятностью 3% cls — это имя, принятое по соглашению для первого параметра методов класса. Он используется аналогично тому, как self используется в методах экземпляра. В то время как self ссылается на конкретный объект (экземпляр) класса, cls ссылается на сам класс. Методы класса Это методы, которые получают сам класс в качестве первого аргумента. Для их создания используется декоратор @classmethod. Рассмотрим пример:
class MyClass:
    class_variable = 0

    def __init__(self, value):
        self.instance_variable = value

    @classmethod
    def class_method(cls, increment):
        cls.class_variable += increment
        print(f"Class variable is now {cls.class_variable}")

# Создание экземпляров
obj1 = MyClass(1)
obj2 = MyClass(2)

# Вызов метода класса
MyClass.class_method(5)  # Выведет: Class variable is now 5
obj1.class_method(3)     # Выведет: Class variable is now 8
obj2.class_method(2)     # Выведет: Class variable is now 10
В этом примере: ✅Класс MyClass: имеет переменную класса class_variable и метод класса class_method. ✅Метод класса class_method: использует cls для доступа и изменения переменной класса. Почему он используется 1️⃣Доступ к атрибутам класса: Методы класса могут изменять состояние класса, а не конкретного экземпляра. 2️⃣Создание альтернативных конструкторов: Часто используется для создания дополнительных способов инициализации объектов. Пример:
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    @classmethod
    def from_birth_year(cls, name, birth_year):
        age = 2024 - birth_year
        return cls(name, age)

# Создание объектов с использованием альтернативного конструктора
person1 = Person("Alice", 30)
person2 = Person.from_birth_year("Bob", 1990)

print(person1.name, person1.age)  # Выведет: Alice 30
print(person2.name, person2.age)  # Выведет: Bob 34
В этом примере: ✅Метод класса from_birth_year использует cls для создания нового объекта Person, рассчитывая возраст на основе года рождения. cls используется в методах класса для ссылки на сам класс. Он позволяет методам класса изменять состояние класса и создавать альтернативные конструкторы. 👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1096 вопроса на Python разработчика. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых

Что такое объект класса ? Спросят с вероятностью 3% Объект класса, или просто объект, — это экземпляр класса, созданный на основе его шаблона. Класс в ООП служит как чертеж для создания объектов. Он определяет атрибуты (данные) и методы (функции), которые объект будет иметь. Создание класса и объектов Рассмотрим пример:
class Dog:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def bark(self):
        print(f"{self.name} is barking")

# Создание объектов класса Dog
dog1 = Dog("Buddy", 3)
dog2 = Dog("Molly", 5)

# Вызов метода объекта
dog1.bark()  # Выведет: Buddy is barking
dog2.bark()  # Выведет: Molly is barking
В этом примере: 1️⃣Класс Dog: определяет два атрибута (name и age) и один метод (bark). 2️⃣Конструктор init: метод, который вызывается при создании нового объекта. Он инициализирует атрибуты объекта. 3️⃣Объекты dog1 и dog2: создаются на основе класса Dog и являются его экземплярами. Важные аспекты 1️⃣Атрибуты: данные, хранящиеся в объекте. Например, dog1.name и dog1.age — это атрибуты объекта dog1. 2️⃣Методы: функции, определенные в классе, которые могут быть вызваны для объекта. Например, dog1.bark() вызывает метод bark объекта dog1. 3️⃣Инкапсуляция: механизм объединения данных (атрибутов) и методов для работы с этими данными в одном объекте. 4️⃣Полиморфизм: возможность объектов разного класса предоставлять одинаковый интерфейс для работы. 5️⃣Наследование: возможность создавать новый класс на основе существующего, унаследуя его атрибуты и методы. Пример с наследованием
class Animal:
    def __init__(self, species):
        self.species = species

    def make_sound(self):
        pass

class Dog(Animal):
    def __init__(self, name, age):
        super().__init__("Dog")
        self.name = name
        self.age = age

    def bark(self):
        print(f"{self.name} is barking")

    def make_sound(self):
        self.bark()

dog1 = Dog("Buddy", 3)
dog1.make_sound()  # Выведет: Buddy is barking
В этом примере: ✅Класс Animal является базовым классом. ✅Класс Dog наследует от Animal и добавляет свои методы и атрибуты. ✅Метод make_sound переопределяется в классе Dog для реализации специфического поведения. Объект класса — это конкретный экземпляр класса с собственными атрибутами и методами. Класс определяет структуру объектов, а объект является конкретной реализацией этой структуры. 👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1096 вопроса на Python разработчика. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых

Что такое diamondproblem ? Спросят с вероятностью 3% Проблема ромбовидного наследования (Diamond Problem) возникает в ООП при использовании множественного наследования. Суть проблемы заключается в неоднозначности, возникающей из-за наследования от нескольких классов, имеющих общего предка. Рассмотрим пример:
class A:
    def method(self):
        print("Method in A")

class B(A):
    def method(self):
        print("Method in B")

class C(A):
    def method(self):
        print("Method in C")

class D(B, C):
    pass

d = D()
d.method()
В этом примере: ✅Класс A является базовым классом. ✅Классы B и C наследуют от класса A и переопределяют метод method. ✅Класс D наследует от классов B и C. Когда мы вызываем метод method через экземпляр класса D (d.method()), возникает вопрос: какой именно метод должен быть вызван - из класса B или из класса C? Это и есть проблема ромбовидного наследования. Решение проблемы ромбовидного наследования Использует метод разрешения порядка (MRO - Method Resolution Order) для решения этой проблемы. MRO определяет порядок, в котором методы должны вызываться в случае множественного наследования. Для просмотра MRO можно использовать атрибут __mro__ или функцию mro().
print(D.__mro__)
Результат будет следующим:
(<class '__main__.D'>, <class '__main__.B'>, <class '__main__.C'>, <class '__main__.A'>, <class 'object'>)
Согласно этому порядку, метод method будет взят из класса B, так как он идёт первым в MRO. Поэтому при вызове d.method(), выведется: Method in B Если классы B и C используют super(), можно правильно вызвать методы всех классов-предков:
class A:
    def method(self):
        print("Method in A")

class B(A):
    def method(self):
        print("Method in B")
        super().method()

class C(A):
    def method(self):
        print("Method in C")
        super().method()

class D(B, C):
    def method(self):
        print("Method in D")
        super().method()

d = D()
d.method()
Результат выполнения будет:
Method in D
Method in B
Method in C
Method in A
В этом случае методы всех классов вызываются в порядке, определённом MRO. Проблема ромбовидного наследования возникает при множественном наследовании и приводит к неоднозначности, какой метод вызывать. Решает эту проблему с помощью MRO (Method Resolution Order), определяющего порядок вызова методов. 👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1096 вопроса на Python разработчика. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых

Какие методы в метаклассах используются ? Спросят с вероятностью 3% Метаклассы предоставляют возможность управления созданием и поведением классов. Основными методами, которые используются в метаклассах, являются: 1️⃣`__new__`: Отвечает за создание нового класса. Он вызывается до __init__ и используется для создания нового объекта класса. В метаклассе new позволяет изменять процесс создания класса. 2️⃣`__init__`: Инициализирует класс, после того как он был создан. В метаклассе init используется для модификации созданного класса, например, добавления атрибутов или методов. 3️⃣`__call__`: Позволяет метаклассу контролировать процесс создания экземпляров класса. Он вызывается, когда создаётся новый объект класса. Рассмотрим пример использования этих методов:
class MyMeta(type):
    def __new__(cls, name, bases, dct):
        print(f'Creating class {name}')
        # Добавление нового атрибута
        dct['added_attribute'] = 'I was added by MyMeta'
        return super().__new__(cls, name, bases, dct)
    
    def __init__(cls, name, bases, dct):
        print(f'Initializing class {name}')
        super().__init__(name, bases, dct)
    
    def __call__(cls, *args, **kwargs):
        print(f'Creating instance of class {cls.__name__}')
        return super().__call__(*args, **kwargs)

class MyClass(metaclass=MyMeta):
    def __init__(self):
        print('Instance initialized')

# Создание экземпляра класса
instance = MyClass()
print(instance.added_attribute)
В этом примере: ✅Метод
ating ins
добавляет новый атрибут added_attribute к классу. ✅Метод init выполняет инициализацию класса и может быть использован для дальнейших модификаций. ✅Метод call контролирует создание экземпляров класса и выполняет необходимые действия при создании нового объекта. Методы new, init и call в метаклассах используются для управления процессами создания и инициализации классов, а также создания их экземпляров. Они позволяют модифицировать классы на различных этапах их жизненного цикла. 👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1096 вопроса на Python разработчика. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых

📌 Составили список лучших каналов от действующих разработчиков: Python Developer — советы и практики от действующего Senior-
📌 Составили список лучших каналов от действующих разработчиков: Python Developer — советы и практики от действующего Senior-разработчика Java Developer — секреты и тонкости программирования на Java Frontend Developer — готовый код и полезные ресурсы для любого фронтендера

Какой магический метод используется для перегрузки оператора умножения для экземпляра класса?
Anonymous voting

Совет от бизнесмена на 2024 год: изучите телеграм-ботов Их легче создать, чем кажется. Благодаря этому каналу справится даже
Совет от бизнесмена на 2024 год: изучите телеграм-ботов Их легче создать, чем кажется. Благодаря этому каналу справится даже гуманитарий, а зарабатывать будете как топовые айтишники. Следуйте гайдам профи — и первый заказ может прийти уже в этот месяце. Это безумие, но люди готовы сколько угодно платить за пару строчек кода: Добавьте картинки в мой бот. Дам по 3К за каждую 3500$, неделя срок, нужен бот на 10 сообщений Накидайте три–четыре шаблона для воронки продаж — плачу 120 тыс руб Знаете 2+2, есть ПК или ноут — трудностей не возникнет, гарантируем: @ph_tg_b

Как в python реализуются метод объекта ? Спросят с вероятностью 3% Методы объекта реализуются как функции, определённые внутри класса. Они могут работать с данными объекта и предоставляют интерфейс для взаимодействия с экземплярами класса. Важным аспектом методов объекта является то, что они принимают первым параметром self, который является ссылкой на экземпляр класса. Пример реализации методов объекта
class MyClass:
    def __init__(self, value):
        self.value = value  # Инициализация атрибута

    def display_value(self):
        print(f"The value is: {self.value}")  # Метод для вывода значения атрибута

    def increment_value(self, amount):
        self.value += amount  # Метод для увеличения значения атрибута на заданное количество

# Создание экземпляра класса
obj = MyClass(10)

# Вызов методов объекта
obj.display_value()  # Выведет: The value is: 10
obj.increment_value(5)
obj.display_value()  # Выведет: The value is: 15
Объяснение кода 1️⃣Конструктор __init__: ✅Метод реализуютявляется специальным методом, который вызывается при создании нового экземпляра класса. ✅Он используется для инициализации атрибутов экземпляра. 2️⃣Метод display_value: ✅Этот метод выводит текущее значение атрибута value. ✅Он принимает только один параметр self, который автоматически передаётся при вызове метода у объекта. 3️⃣Метод increment_value: ✅Этот метод увеличивает значение атрибута value на заданное количество. ✅Он принимает два параметра: self и amount, где self — это ссылка на экземпляр, а amount — значение, на которое нужно увеличить value. Использование self Это ссылка на текущий экземпляр класса, которая позволяет доступ к его атрибутам и другим методам. Важно использовать self для чтения и изменения атрибутов экземпляра внутри методов. Методы экземпляра, класса и статические методы В дополнение к обычным методам объекта, также можно определить методы класса и статические методы. 1️⃣Методы класса: ✅Методы класса используют декоратор @classmethod и принимают первым параметром cls, который является ссылкой на сам класс. ✅Они полезны для работы с атрибутами класса или для создания экземпляров альтернативными способами.
class MyClass:
    class_value = 0

    def __init__(self, value):
        self.value = value

    @classmethod
    def set_class_value(cls, new_value):
        cls.class_value = new_value

# Вызов метода класса
MyClass.set_class_value(10)
print(MyClass.class_value)  # Выведет: 10
2️⃣Статические методы: Статические методы используют декоратор @staticmethod и не принимают ни self, ни cls. ✅Они полезны для функций, которые не зависят от состояния экземпляра или класса.
class MyClass:
    @staticmethod
    def static_method():
        print("This is a static method")

# Вызов статического метода
MyClass.static_method()  # Выведет: This is a static method
Методы объекта — это функции, определённые внутри класса, которые работают с данными экземпляра через параметр self. Методы класса и статические методы также могут быть определены с использованием декораторов @classmethod и @staticmethod соответственно. 👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1096 вопроса на Python разработчика. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых

Все надоело и пропал интерес, чувствуешь себя амебой и хочется только залипать в телефоне. Бывает? Психолог взрослого человек
Все надоело и пропал интерес, чувствуешь себя амебой и хочется только залипать в телефоне. Бывает? Психолог взрослого человека - канал для айтишников, у которых периодически опускаются руки и отключается мозг, ибо переработки и постоянная тревожность не приводят к другим исходам. ▪️ Как научиться отвлекаться от работы и отдыхать? ▪️ Как совместить кучу рабочих задач и время с семьей? ▪️ Как справиться с прокрастинацией? ▪️ Как не растерять запал, даже если начальник и коллеги 💩 и кажется, что ничего не выходит? Подписывайтесь на канал @vadimpetrov_psy и научитесь работать без упахивания, выгорания и ущерба для личной жизни! 👨🏻‍💻 Псс. Заходите в закреп канала - там много полезного.

Какой метод декоратора property позволяет установить значение атрибута, при этом применяя дополнительные проверки или вычисления?
Anonymous voting

Как выражена инкапсуляция в python ? Спросят с вероятностью 3% Инкапсуляция выражена через механизмы, которые позволяют скрывать внутренние детали реализации класса и предоставлять доступ к данным и методам через определённый интерфейс. Достигается с помощью соглашений об именовании и специальных методов. Основные аспекты инкапсуляции включают: Соглашения об именовании 1️⃣Приватные атрибуты и методы: ✅В Python соглашение об именовании позволяет сделать атрибуты и методы приватными, что предотвращает их случайное использование вне класса. ✅Атрибуты и методы, начинающиеся с одного подчёркивания (_), считаются защищёнными и не должны использоваться вне класса или подклассов. ✅Атрибуты и методы, начинающиеся с двойного подчёркивания (__), подвергаются манглингу имён (name mangling), что делает их труднодоступными из вне класса.
class MyClass:
    def __init__(self, value):
        self._protected_value = value  # Защищённый атрибут
        self.__private_value = value   # Приватный атрибут

    def _protected_method(self):
        print("This is a protected method.")

    def __private_method(self):
        print("This is a private method.")
Примеры использования 1️⃣Защищённые атрибуты и методы: ✅Они не предназначены для использования вне класса, но могут быть использованы в подклассах. ✅Их использование вне класса является плохой практикой, но технически возможно.
class SubClass(MyClass):
    def access_protected(self):
        print(self._protected_value)
        self._protected_method()

instance = SubClass(10)
instance.access_protected()
# Выведет:
# 10
# This is a protected method.
2️⃣Приватные атрибуты и методы: ✅Они подвергаются манглингу имён, что делает их труднодоступными из вне класса. ✅Внешний доступ возможен, но с использованием специального синтаксиса, что считается плохой практикой.
class AnotherClass:
    def __init__(self, value):
        self.__private_value = value

    def __private_method(self):
        print("This is a private method.")

    def access_private(self):
        print(self.__private_value)
        self.__private_method()

instance = AnotherClass(20)
instance.access_private()
# Выведет:
# 20
# This is a private method.

# Попытка доступа к приватному атрибуту извне
# print(instance.__private_value)  # AttributeError

# Доступ с использованием манглинга имён (не рекомендуется)
print(instance._AnotherClass__private_value)  # Выведет: 20
Свойства (Properties) Предоставляют интерфейс для управления доступом к атрибутам и позволяют инкапсулировать логику доступа и изменения данных.
class MyClassWithProperty:
    def __init__(self, value):
        self._value = value

    @property
    def value(self):
        return self._value

    @value.setter
    def value(self, new_value):
        if new_value > 0:
            self._value = new_value
        else:
            raise ValueError("Value must be positive")

instance = MyClassWithProperty(10)
print(instance.value)  # Выведет: 10
instance.value = 20
print(instance.value)  # Выведет: 20
# instance.value = -10  # ValueError: Value must be positive
Инкапсуляция достигается с помощью соглашений об именовании (одинарное подчёркивание для защищённых и двойное подчёркивание для приватных атрибутов и методов) и использования свойств для управления доступом к атрибутам. Это позволяет скрывать внутренние детали реализации и предоставлять контролируемый интерфейс для взаимодействия с объектами. 👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1096 вопроса на Python разработчика. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых

Какой метод метакласса позволяет модифицировать атрибуты класса перед его созданием?
Anonymous voting

Как бы реализовал метод new через singleton ? Спросят с вероятностью 3% Чтобы реализовать метод __new__ для создания класса по шаблону Singleton, нужно следовать принципам, которые обеспечивают создание только одного экземпляра класса. Метод new отвечает за создание нового экземпляра класса, и его можно использовать для контроля этого процесса. Ниже приведен пример реализации Singleton с использованием метода new. Пример реализации Singleton с методом new
class Singleton:
    _instance = None

    def __new__(cls, *args, **kwargs):
        if cls._instance is None:
            cls._instance = super(Singleton, cls).__new__(cls, args, kwargs)
        return cls._instance

    def __init__(self, value):
        if not hasattr(self, 'initialized'):
            self.value = value
            self.initialized = True

# Проверка работы Singleton
singleton1 = Singleton(10)
singleton2 = Singleton(20)

print(singleton1 is singleton2)  # Выведет: True
print(singleton1.value)          # Выведет: 10
print(singleton2.value)          # Выведет: 10
Объяснение кода 1️⃣Атрибут _instance: ✅cls._instance используется для хранения единственного экземпляра класса. 2️⃣Метод
e):
      
✅Методреализовавызывается передл метод neи отвечает за создание нового экземпляра класса. ✅Если _instance равен None, создается новый экземпляр с помощью super(Singleton, cls).__new__(cls, args, kwargs) и сохраняется в _instance. ✅Если _instance уже существует, возвращается существующий экземпляр. 3️⃣Метод init: ✅Метод init выполняет инициализацию экземпляра. ✅Чтобы избежать повторной инициализации, проверяется наличие атрибута initialized. Если он не существует, происходит инициализация атрибутов и устанавливается initialized = True. Преимущества и особенности реализации ✅Контроль создания экземпляров: Метод new гарантирует, что создается только один экземпляр класса. ✅Предотвращение повторной инициализации: Метод init инициализируется только один раз, что предотвращает перезапись значений атрибутов при повторных вызовах. Метод new используется в шаблоне Singleton для создания только одного экземпляра класса. Он контролирует процесс создания объекта, возвращая существующий экземпляр, если он уже создан. 👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1096 вопроса на Python разработчика. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых

Какое утверждение описывает ключевое отличие между списками и кортежами, которое влияет на производительность?
Anonymous voting

Для чего они нужны dunder методы ? Спросят с вероятностью 3% Dunder-методы представляют собой специальные методы, которые начинаются и заканчиваются двойным подчёркиванием (например, __init__,Для чего __repr__). Основные методы и их назначения 1️⃣Инициализация и завершение объектов: ✅__init__(self, ...): Конструктор класса, вызывается при создании нового экземпляра.
          class MyClass:
         def __init__(self, value):
             self.value = value
     
✅__del__(self): Деструктор, вызывается при удалении объекта. 2️⃣Представление объектов: ✅__str__(self): Определяет поведение функции str() и print(). Возвращает строковое представление объекта для пользователя.
          class MyClass:
         def __init__(self, value):
             self.value = value

         def __str__(self):
             return f'MyClass with value {self.value}'
     
✅__repr__(self): Определяет поведение функции repr(). Возвращает строковое представление объекта для разработчика.
          class MyClass:
         def __init__(self, value):
             self.value = value

         def __repr__(self):
             return f'MyClass({self.value!r})'
     
3️⃣Сравнение объектов: ✅__eq__(self, other): Оператор равенства ==. ✅__lt__(self, other): Оператор меньше <. ✅__le__(self, other): Оператор меньше или равно <=. ✅Аналогично можно определить методыСравнениДля чегоДля чего 4️⃣Арифметические операции: ✅__add__(self, other): Оператор сложения +. ✅__sub__(self, other): Оператор вычитания -. ✅__mul__(self, other): Оператор умножения *. ✅Аналогично можно определить методы для других арифметических операций:х назначения Для чего они нДля чего Для чего 5️⃣Контейнерные операции: ✅__len__(self): Возвращает длину объекта, используется в функции len().
          class MyContainer:
         def __init__(self, items):
             self.items = items

         def __len__(self):
             return len(self.items)
     
✅__getitem__(self, key): Позволяет доступ к элементам по ключу (используется оператор []).
          class MyContainer:
         def __init__(self, items):
             self.items = items

         def __getitem__(self, index):
             return self.items[index]
     
6️⃣Итерация: ✅__iter__(self): Возвращает итератор для объекта.
          class MyContainer:
         def __init__(self, items):
             self.items = items

         def __iter__(self):
             return iter(self.items)
     
7️⃣Контекстные менеджеры: ✅__enter__(self): Определяет действия при входе в контекст (with). ✅__exit__(self, exc_type, exc_value, traceback): Определяет действия при выходе из контекста.
          class MyContextManager:
         def __enter__(self):
             print("Entering the context")
             return self

         def __exit__(self, exc_type, exc_value, traceback):
             print("Exiting the context")

     with MyContextManager():
         print("Inside the context")
     
Зачем они нужны 1️⃣Упрощение работы с объектами: Позволяют легко определять, как объекты класса должны вести себя при использовании стандартных операторов и функций Python. 2️⃣Читаемость и удобство: Улучшают читаемость и удобство использования кода, делая объекты более интуитивными и естественными для работы. 3️⃣Переиспользование кода: Позволяют реализовать методы один раз и переиспользовать их в различных частях программы, что способствует уменьшению дублирования кода. Dunder-методы позволяют классам интегрироваться с встроенными операциями и функциями, такими как арифметические операции, сравнения и представления. Они делают работу с объектами интуитивной и упрощают код. 👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1096 вопроса на Python разработчика. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых

Какой HTTP метод REST API не соответствует принципу идемпотентности, согласно стандартному использованию?
Anonymous voting

Какая проблема Python связана с множественным наследованием ? Спросят с вероятностью 3% Множественное наследование позволяет классу наследовать от нескольких базовых классов, что может быть полезно, но также приводит к ряду проблем. Основные проблемы, связанные с множественным наследованием, включают: 1️⃣Проблема ромба (Diamond Problem): ✅Это ситуация, когда класс наследует от двух классов, которые оба наследуют от одного общего предка. Это может привести к неоднозначности в разрешении методов и атрибутов. ✅Пример:
          class A:
         def method(self):
             print("Method in A")

     class B(A):
         def method(self):
             print("Method in B")

     class C(A):
         def method(self):
             print("Method in C")

     class D(B, C):
         pass

     d = D()
     d.method()  # Какой метод будет вызван: из B или из C?
     
2️⃣Проблемы с порядком разрешения методов (MRO - Method Resolution Order): ✅В Python для решения проблемы ромба используется алгоритм C3-линеаризации, который определяет порядок, в котором должны быть просмотрены базовые классы. ✅Можно использовать функцию mro() для просмотра порядка разрешения методов:
  print(D.mro())
     
✅Пример:
          class A:
         def method(self):
             print("Method in A")

     class B(A):
         def method(self):
             print("Method in B")

     class C(A):
         def method(self):
             print("Method in C")

     class D(B, C):
         pass

     d = D()
     d.method()  # Выведет: "Method in B", так как B стоит раньше C в MRO
     
3️⃣Управление состоянием и совместимость: ✅Классы могут иметь конфликтующие атрибуты и методы, что усложняет управление состоянием объектов. ✅Переопределение методов в одном классе может непредсказуемо повлиять на поведение других классов. Как он решает эти проблемы Использует несколько подходов для решения проблем, связанных с множественным наследованием: 1️⃣Алгоритм C3-линеаризации: ✅Этот алгоритм гарантирует корректный и предсказуемый порядок вызовов методов при множественном наследовании. ✅Порядок определяется как левая-направо, глубина-первый подход с корректировкой для избежания дублирования базовых классов. 2️⃣Использование функции super(): ✅Функция super() позволяет корректно вызывать методы родительских классов, следуя порядку MRO. ✅Это помогает избежать явного указания родительских классов и упрощает поддержку кода. ✅Пример:
          class A:
         def method(self):
             print("Method in A")

     class B(A):
         def method(self):
             super().method()
             print("Method in B")

     class C(A):
         def method(self):
             super().method()
             print("Method in C")

     class D(B, C):
         def method(self):
             super().method()

     d = D()
     d.method()
     # Выведет:
     # Method in A
     # Method in C
     # Method in B
     
Проблема множественного наследования связана с неоднозначностью порядка вызова методов и конфликтами атрибутов. Python решает эти проблемы с помощью алгоритма C3-линеаризации и функции super(), обеспечивающей корректный порядок разрешения методов. 👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1096 вопроса на Python разработчика. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых