Str Code (IT-Community)
586 subscribers
30 photos
4 videos
110 links
Наше комьюнити: https://t.iss.one/strc0mmunity
Связь: @strrrrr1
Download Telegram
Какой из этих двух классов вызывается первым? Спрашивают с вероятностью 3%.

Когда речь идет о том, какой из классов вызывается первым, предполагается вопрос о порядке вызова конструкторов в иерархии наследования. В Python это определяется MRO (Method Resolution Order), что особенно важно при множественном наследовании.

Пример с двумя классами:
class A:
    def __init__(self):
        print("Constructor of A")

class B(A):
    def __init__(self):
        print("Constructor of B")
        super().__init__()

Создание экземпляра класса B
b = B()

Порядок вызова:
1️⃣ Создавая объект класса B, сначала вызinitтор __init__.
2️⃣ Внутри конструктора B, вызов super().__init__() вызывает конструктор базового класса A.

Вывод программы:
Constructor of B
Constructor of A

То есть, сначала вызывается конструктор B, а затем A.

Метод разрешения порядка (MRO):
MRO определяет, в каком порядке обрабатываются классы при наследовании. В Python этот порядок можно увидеть с помощью атрибута mro или функции mro().

mro
print(B.__mro__)

Вывод:
(<class '__main__.B'>, <class '__main__.A'>, <class 'object'>)
Это показывает, что порядок вызова методов для класса B такой:
1️⃣ B
2️⃣ A
3️⃣ object

Пример с множественinitм:
class A:
    def __init__(self):
        print("Constructor of A")

class B(A):
    def __init__(self):
        print("Constructor of B")
        super().__init__()

class C(A):
    def __init__(self):
        print("Constructor of C")
        super().__init__()

class D(B, C):
    def __init__(self):
        print("Constructor of D")
        super().__init__()

Создание экземпляра класса D
d = D()

Порядок вызова:
При создании объекта класса D вызовы кmroоисхоmroласно MRO для D.

mainе MRO:
print(D.__mro__)

Вывод:
(<class '__main__.D'>, <class '__main__.B'>, <class '__main__.C'>, <class '__main__.A'>, <class 'object'>)
Вывод программы:
Constructor of D
Constructor of B
Constructor of C
Constructor of A

То есть, порядок вызова конструкторов:
1️⃣ D
2️⃣ B
3️⃣ C
4️⃣ A

Итого:
При создании объекта класса сначала вызывается конструктор самого класса, затем конструкторы его базовых классов в порядке, определённом MRO.

Python | Вопросы с собеседований
Как в Python делать приватные методы?
Спросят с вероятностью 3%

Приватные методы в Python делаются с помощью двойного подчёркивания (__) перед именем метода. Это включает механизм "name mangling", который делает метод менее доступным снаружи класса, добавляя к имени метода имя класса.

Пример:
class MyClass:
def __init__(self, value):
self.value = value

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

def public_method(self):
self.__private_method()

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

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

# Прямой вызов приватного метода приведёт к ошибке
# obj.__private_method() # AttributeError: 'MyClass' object has no attribute '__private_method'

Что тут происходит:
- Метод __private_method является приватным и не может быть вызван напрямую извне класса.

Доступ к приватным методам
Хотя приватные методы скрыты, их всё же можно вызвать с помощью name mangling:
# Доступ к приватному методу через name mangling
obj._MyClass__private_method() # Выведет: Private method: The value is 10

Почему они нужны
1️⃣ Инкапсуляция: Помогают скрывать внутреннюю реализацию класса и защищают данные и методы от несанкционированного доступа и изменения.

2️⃣ Упрощение интерфейса: Скрывая детали реализации, приватные методы позволяют сосредоточиться на использовании класса через его публичный интерфейс.

3️⃣ Предотвращение конфликтов имён: Приватные методы уменьшают вероятность конфликтов имён при наследовании классов.

Правила именования
- Публичные методы: Нет подчёркиваний в начале имени.
- Защищённые методы: Одно подчёркивание в начале имени (_method).
- Приватные методы: Два подчёркивания в начале имени (__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() # AttributeError

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

# Доступ к приватному методу через name mangling
obj._MyClass__private_method() # Выведет: Private method: The value is 10

Приватные методы в Python делаются с помощью двойного подчёркивания перед именем метода. Это помогает скрывать методы и защищать данные, хотя полностью не предотвращает доступ к ним.

Python | Вопросы с собеседований
Какой метод используется для добавления элемента в конец списка?
Anonymous Quiz
80%
A) append()
10%
B) insert()
0%
C) add()
10%
D) extend()
Что такое 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 используется в методах класса для ссылки на сам класс. Он позволяет методам класса изменять состояние класса и создавать альтернативные конструкторы.

Python | Вопросы с собеседований
Как реализовать публичный метод в Python?

Спросят с вероятностью 3%

В Python методы по умолчанию публичные. Это значит, что их можно вызывать из любого места, где доступен объект класса. Публичные методы позволяют взаимодействовать с объектом и выполнять действия или получать данные.

Пример:

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() # AttributeError

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

Почему использовать публичные методы

1. Интерфейс для взаимодействия: Публичные методы позволяют пользователям класса выполнять действия или получать данные.
2. Инкапсуляция: Они скрывают внутреннюю реализацию класса, предоставляя только необходимые методы.

Итого
Публичные методы доступны для вызова из любого места. Они предоставляют интерфейс для взаимодействия с объектом и обычно не имеют подчёркиваний в начале имени.

Python | Вопросы с собеседований
Какой из следующих вариантов создаст словарь (dictionary) с тремя ключами и соответствующими значениями?
Anonymous Quiz
17%
A) my_dict = {1, 2, 3}
83%
B) my_dict = {1: 'a', 2: 'b', 3: 'c'}
0%
C) my_dict = [1, 2, 3]
0%
D) my_dict = (1, 2, 3)
🍑 Информация

Привет друзья! На связи Str - админ паблика 😎 В этом канале буду делиться с вами общей информацией по разработке (темы канала — чуть ниже).

Мои каналы на данный момент:
🚬 Str (IT-Community) — Мой личный канал, в котором я делюсь своей жизнью, как разработчика, публикую материал по интересным технологиям, как по Frontend, так и по Backend разработке.

👩‍💻 Str Frontend (IT-Community) Канал посвящённый исключительно Frontend разработке. Тесты, статьи, обучающие видео и тд по js, react и другим инструментам Frontend разработчика

👩‍💻 Str Backend (IT-Community) Канал посвящённый исключительно Backend разработке. Тесты, статьи, обучающие видео и тд по различным Backend языкам программирования. Разбор актуальных инструментов, трендов Backend разработки

👩‍💻 Str Code (IT-Community) Канал общей направленности для программистов всех сфер.


😳Темы канала:
#Курсы — бесплатные курсы
#Инструменты — библиотеки/фреймворки
#Статьи — статьи
#Тесты — практические тесты
#Новости — новости из мира Backend`a
#Видео — обучающие видео
#Собеседования — записи собеседований

📣 Str Code (IT-Community)|
Please open Telegram to view this post
VIEW IN TELEGRAM
💻 CI/CD за 20 минут с наглядными примерами

В этом видео автор разберем теорию по CI/CD, а также на реальных примерах рассмотрит CI/CD Pipeline.

Видеоролик будет полезен начинающим разработчикам, которые ранее с этой концепцией не сталкивались.


📣 Str Backend (IT-Community) | #Видео
Please open Telegram to view this post
VIEW IN TELEGRAM
2
🕺 Что такое Kubernetes | Архитектура кубера

😉 Kubernetes - платформа для оркестровки контейнеров с открытым исходным кодом. Данный инструмент используется в большинстве биг-тех компаний. Так что важно владеть данным инструментом, а начать ознакомление вы можете с этого видео


📣 Str Code (IT-Community) | Str Backend (IT-Community) | #Видео
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Forwarded from STR IT (Randomize Bot 🎲 [Рандомайзер])
💻Розыгрыш для программистов от Str (IT-Community)

Первый розыгрыш прошел. Заметил, что вам понравилась данная активность, а значит можем сразу начать следующий) Теперь все 3 книги - невероятно интересные, сам прочёл/читаю каждую и советую прочитать всем!


1. Грокаем алгоритмы 2
2. Чистая архитектура
3. English grammar in use (отличный учебник по английскому)

Условия для участия всё также просты:
1. Подписка на мои каналы по программированию:
Str (IT-Community) | Str Frontend (IT-Community) |
Str Code (IT-Community) | Str Backend (IT-Community)
2. Нажимай "Участвую"

Итоги будут - 15 февраля 12:00 по мск

Str (IT-Community) Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
💻 HTTP или HTTPS – как работает и в чём разница?

В этом видео автор разберёт, в чём разница между HTTP и HTTPS и какие опасности ждут вас или ваших пользователей при посещении сайтов без заветной S (secure) на конце.


📣 Str Code (IT-Community) | Str Backend (IT-Community) | #Видео
Please open Telegram to view this post
VIEW IN TELEGRAM
Микросервисы — простыми словами за 48 минут

Микросервисы стали незаменимым стеком в IT. Умение с ними работать — необходимый навык любого современного программиста.

К концу
видео вы будете прекрасно понимать, что такое микросервисы, для чего они нужны, а главное, как с их помощью получить крутой оффер.


Str Code (IT-Community) | Str Backend (IT-Community) | #Видео
2
Криптография: как работает шифрование? С нуля за час

В этом видео рассматриваются все аспекты шифрования, начиная с замены символов битами и заканчивая алгоритмами Люцифера и DES.

Вы также узнаете про режимы блочного шифрования и переход к поточным шифрам, таким как RC4, а также проблемы передачи ключей и их решения. В завершение раскрыты темы асимметричного шифрования, алгоритмов RSA и AES.


Str Code (IT-Community) | Str Backend (IT-Community) | #Видео
3
ТОП-8 фраз, которые испортят впечатление о вас на собеседовании в IT

Представьте — вы потратили неделю на подготовку к собеседованию в IT-компанию вашей мечты: изучили все технические вопросы, подготовили примеры из опыта и многое другое... Но что, если всего лишь одна неверно подобранная фраза на, казалось бы, безобидный вопрос, перечеркнет все ваши старания?

Чтобы такого не произошло, автор расскажет о фразах, которые лучше исключить из вашего «арсенала», чтобы приблизиться к успеху и получить желаемую работу.


Str Code (IT-Community)
| Str Backend (IT-Community) | #Статьи
🔥2
Как распознать, что с компанией что-то не так? 11 тревожных сигналов на собеседовании.

В этой статье мы обсудим 11 красных флагов, на которые стоит обратить внимание во время собеседования.
Это полезная информация, которая поможет вам не тратить свое время и ресурсы на проблемного работодателя, распознав его заранее.

Str Code (IT-Community) | Str Backend (IT-Community) | #Статьи
4
Git и GitHub: незаменимые инструменты для разработчиков

В данном видео мы рассмотрим систему контроля версий - Git и выясним, почему она незаменима для разработчиков. Git позволяет упорядоченно управлять изменениями в коде, продуктивно взаимодействовать в команде и предотвращать разногласия при слиянии правок.

Также мы изучили основной функционал команд Git, популярную методологию GitFlow и возможности GitHub. Теперь вы сможете эффективно применять Git в своих проектах.

Str (IT-Community) | #Видео
Кибербезопасность с Python

Для специалистов по информационной защите Python – это не просто язык программирования, а универсальный инструментальный комплекс для противодействия киберугрозам.

Статья представляет 5 непревзойденных решений, которые позволяют анализировать, предотвращать и нейтрализовывать потенциальные риски в цифровой среде.


Str (IT-Community) | #Статья
Искусственный интеллект: Простое объяснение сложной технологии

Статья предлагает нетехническое погружение в принципы работы современных больших языковых моделей. Авторский подход позволяет понять сложные механизмы ИИ через доступные и понятные описания.

Материал раскрывает базовые принципы создания интеллектуальных систем, показывая, что за внешней сложностью стоят вполне постижимые математические и алгоритмические концепции.

Str (IT-Community) | #Статья
👀1