Architec.Ton is a ecosystem on the TON chain with non-custodial wallet, swap, apps catalog and launchpad.
Main app: @architec_ton_bot
Our Chat: @architec_ton
EU Channel: @architecton_eu
Twitter: x.com/architec_ton
Support: @architecton_support
Last updated 2 weeks, 2 days ago
Канал для поиска исполнителей для разных задач и организации мини конкурсов
Last updated 1 month ago
*🤔 *Что такое git?
Git — это система контроля версий, позволяющая отслеживать изменения в коде, управлять ветками и работать в команде. Она поддерживает распределённый подход, где каждый разработчик имеет локальную копию репозитория. Git используется для ведения истории изменений и упрощения совместной работы.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай *📚*** Базу знаний
🤔 Виды наследования?
В объектно-ориентированном программировании наследование позволяет одному классу (называемому подклассом или наследником) унаследовать атрибуты и методы другого класса (называемого суперклассом или родительским классом).
🟠Одиночное наследование (Single Inheritance)
Одиночное наследование — это когда класс наследует только один родительский класс.
```
class Animal:
def speak(self):
return "Some sound"
class Dog(Animal):
def speak(self):
return "Woof!"
dog = Dog()
print(dog.speak()) # Woof!
```
🟠Множественное наследование (Multiple Inheritance)
Множественное наследование — это когда класс наследует несколько родительских классов.
```
class Animal:
def eat(self):
return "Eating"
class Pet:
def play(self):
return "Playing"
class Dog(Animal, Pet):
def speak(self):
return "Woof!"
dog = Dog()
print(dog.eat()) # Eating
print(dog.play()) # Playing
print(dog.speak()) # Woof!
```
🟠Многоуровневое наследование (Multilevel Inheritance)
Многоуровневое наследование — это когда класс наследует другой класс, который в свою очередь наследует другой класс.
```
class Animal:
def eat(self):
return "Eating"
class Mammal(Animal):
def walk(self):
return "Walking"
class Dog(Mammal):
def speak(self):
return "Woof!"
dog = Dog()
print(dog.eat()) # Eating
print(dog.walk()) # Walking
print(dog.speak()) # Woof!
```
*🟠*Иерархическое наследование (Hierarchical Inheritance)
Иерархическое наследование — это когда несколько классов наследуют один и тот же родительский класс.
```
class Animal:
def speak(self):
return "Some sound"
class Dog(Animal):
def speak(self):
return "Woof!"
class Cat(Animal):
def speak(self):
return "Meow!"
dog = Dog()
cat = Cat()
print(dog.speak()) # Woof!
print(cat.speak()) # Meow!
```
🟠Гибридное наследование (Hybrid Inheritance)
Гибридное наследование — это комбинация двух или более типов наследования. Это может быть сложная структура, включающая одиночное, множественное, многоуровневое и иерархическое наследование.
```
class Animal:
def eat(self):
return "Eating"
class Mammal(Animal):
def walk(self):
return "Walking"
class Bird(Animal):
def fly(self):
return "Flying"
class Bat(Mammal, Bird):
def use_sonar(self):
return "Using sonar"
bat = Bat()
print(bat.eat()) # Eating
print(bat.walk()) # Walking
print(bat.fly()) # Flying
print(bat.use_sonar()) # Using sonar
```
Ставь *👍*** и забирай *📚*** Базу знаний
? Что такое абстракция?
? Спрашивают в 3% собеседований
Абстракция — это один из ключевых принципов объектно-ориентированного программирования (ООП), который позволяет упростить сложные системы, скрывая детали их реализации и предоставляя только необходимую функциональность. В Python абстракция достигается через использование классов и интерфейсов, что позволяет разработчикам создавать более понятные и управляемые структуры кода.
? Принцип абстракции
Абстракция позволяет сосредоточиться на том, что делает объект, а не на том, как он это делает. Это достигается путем:
1️⃣ Скрытия внутренней реализации: Пользователи объектов видят только методы и свойства, которые предоставляются классом, но не детали их реализации.
2️⃣Предоставления простого интерфейса: Классы могут предоставлять четко определенные методы, которые обеспечивают взаимодействие с объектами.
? Абстрактные классы и методы в Python
В Python абстракция часто реализуется с использованием абстрактных классов и методов. Абстрактные классы определяются с помощью модуля abc
(Abstract Base Classes), а абстрактные методы обозначаются декоратором @abstractmethod
.
➕ Пример абстрактного класса
```
from abc import ABC, abstractmethod
class Animal(ABC):
@abstractmethod
def make_sound(self):
pass
@abstractmethod
def move(self):
pass
```
? Реализация абстрактного класса
Абстрактный класс Animal
определяет два абстрактных метода: make_sound
и move
. Эти методы не имеют реализации и должны быть реализованы в подклассах. Попробуем создать подклассы:
```
class Dog(Animal):
def make_sound(self):
return "Bark"
def move(self):
return "Run"
class Cat(Animal):
def make_sound(self):
return "Meow"
def move(self):
return "Jump"
```
Теперь мы можем создать объекты классов Dog
и Cat
и использовать их методы, не задумываясь о деталях реализации.
```
dog = Dog()
print(dog.make_sound()) # Вывод: "Bark"
print(dog.move()) # Вывод: "Run"
cat = Cat()
print(cat.make_sound()) # Вывод: "Meow"
print(cat.move()) # Вывод: "Jump"
```
? Преимущества абстракции
1️⃣ Упрощение сложных систем: Абстракция помогает разбивать сложные системы на более управляемые части.
2️⃣ Повышение читабельности и поддерживаемости кода: Код становится более понятным, так как скрываются ненужные детали реализации.
3️⃣ Снижение зависимости кода: Изменения в реализации не влияют на пользователей класса, что позволяет более гибко изменять и расширять функциональность.
? Подводя итог
Абстракция в ООП позволяет скрывать детали реализации и предоставлять простой интерфейс для взаимодействия с объектами. В Python абстракция достигается через абстрактные классы и методы, которые определяются с использованием модуля abc
и декоратора @abstractmethod
.
?Кратко:
Абстракция скрывает детали реализации и предоставляет простой интерфейс для использования объектов. В Python это реализуется с помощью абстрактных классов и методов.
? База собесов | ? База тестовых
? Что такое MRO ?
MRO определяет порядок, в котором интерпретатор будет искать методы и атрибуты при их вызове в контексте множественного наследования. Это обеспечивает предсказуемость и избегает конфликтов при наследовании от нескольких классов.
Ставь ? если знал ответ и ? если нет
Что такое абстракция ?
Спросят с вероятностью 3%
Абстракция — это одна из основных концепций объектно-ориентированного программирования (ООП), наряду с инкапсуляцией, наследованием и полиморфизмом. Позволяет создавать упрощенные модели сложных систем, выделяя только те аспекты, которые являются важными для конкретной задачи, и скрывая детали реализации.
Основные аспекты
1️⃣Скрытие деталей реализации: Позволяет скрыть сложные детали реализации и показать только те части объекта, которые необходимы для его использования.
2️⃣Определение интерфейсов: Фокусируется на определении интерфейсов и методов, которые могут быть использованы для взаимодействия с объектом.
3️⃣Упрощение взаимодействия: Упрощает взаимодействие с объектами, предоставляя простой и понятный интерфейс.
Абстракцию можно реализовать с помощью абстрактных классов и методов. Абстрактный класс определяет интерфейс для группы подклассов, но сам не предназначен для создания экземпляров.
Для создания абстрактных классов и методов в Python используется модуль abc
(Abstract Base Classes).
Пример:
```
from abc import ABC, abstractmethod
class Animal(ABC):
@abstractmethod
def make_sound(self):
pass
class Dog(Animal):
def make_sound(self):
return "Bark"
class Cat(Animal):
def make_sound(self):
return "Meow"
# Создание экземпляров конкретных классов
dog = Dog()
cat = Cat()
print(dog.make_sound()) # Выведет: Bark
print(cat.make_sound()) # Выведет: Meow
# Попытка создания экземпляра абстрактного класса приведет к ошибке
# animal = Animal() # TypeError: Can't instantiate abstract class Animal with abstract methods make_sound
```
Основные компоненты
1️⃣Абстрактный класс (Animal
): Определяет общие методы, которые должны быть реализованы в подклассах.
2️⃣Абстрактный метод (make_sound
): Объявляется в абстрактном классе и должен быть реализован в любом конкретном подклассе.
3️⃣Конкретные классы (Dog
и Cat
): Реализуют абстрактный метод, предоставляя конкретную реализацию.
Преимущества
1️⃣Упрощение разработки: Позволяет сосредоточиться на высокоуровневом дизайне, не отвлекаясь на детали реализации.
2️⃣Повышение гибкости: Изменения в реализации могут быть сделаны без изменения интерфейсов, что облегчает модификацию и расширение кода.
3️⃣Улучшение читаемости: Абстрактные классы и методы делают код более понятным и структурированным, четко показывая, какие методы должны быть реализованы в подклассах.
Абстракция в ООП позволяет скрывать сложные детали реализации, предоставляя простой интерфейс для взаимодействия с объектами. Она упрощает разработку, улучшает читаемость кода и повышает его гибкость. Можно реализовать с помощью абстрактных классов и методов, используя модуль abc
.
? Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1096 вопроса на Python разработчика. Ставь ? если нравится контент
? База собесов | ? База тестовых
Какая разница между методами str и repr ?
Спросят с вероятностью 3%
Методы __str__ и repr используются для получения строкового представления объекта, но они имеют разные цели и используются в разных контекстах.
Метод str
✅Цель: Должен возвращать строковое представление объекта, которое будет понятным и удобным для пользователя.
✅Использование: Метод str используется функцией str()
и при вызове print()
.
✅Предназначение: Для более дружественного и читаемого представления объекта.
Метод repr
✅Цель: Должен возвращать строку, которая официально представляет объект и, по возможности, позволяет воссоздать объект, если передать эту строку в eval()
.
✅Использование: Метод repr используется функцией repr()
и вызывается интерактивной оболочкой Python для отображения объектов.
✅Предназначение: Для более точного и детализированного представления объекта, предназначенного для разработчиков.
Пример
```
class MyClass:
def __init__(self, value):
self.value = value
def \_\_str\_\_(self):
return f"MyClass with value {self.value}"
def \_\_repr\_\_(self):
return f"MyClass({self.value})"
obj = MyClass(10)
# Использование_(self):
print(str(obj)) # Выведет: MyClass with value 10
print(obj) # Выведет: MyClass with value 10 (так как print вызывает str)
# Использование
*repr*
print(repr(obj)) # Выведет: MyClass(10)
```
Основные различия
1️⃣Контекст использования:
✅__str__
предназначен для удобного представления объекта пользователю.
✅__repr__
предназначен для официального представления объекта, полезного для отладки и разработки.
2️⃣Вызываемые функции:
✅str()
и print()
используют str.
✅repr()
и интерактивная оболочка Python используют repr.
3️⃣Содержимое строки:
✅__str__
возвращает удобочитаемую строку.
✅__repr__
возвращает строку, которая может включать больше технической информации и может использоваться для воссоздания объекта.
Пример с реализацией обоих методов
```
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def \_\_str\_\_(self):
return f"Point({self.x}, {self.y})"
def \_\_repr\_\_(self):
return f"Point({self.x}, {self.y})"
p = Point(1, 2)
# Использование
*str*
print(str(p)) # Выведет: Point(1, 2)
print(p) # Выведет: Point(1, 2)
# Использование
*repr*
print(repr(p)) # Выведет: Point(1, 2)
```
Дополнительный пример с различием междуstr__
и _
и repr
```
class ComplexNumber:
def __init__(self, real, imag):
self.real = real
self.imag = imag
def \_\_str\_\_(self):
return f"{self.real} + {self.imag}i"
def \_\_repr\_\_(self):
return f"ComplexNumber({self.real}, {self.imag})"
c = ComplexNumber(3, 4)
# Использование
*str*
print(str(c)) # Выведет: 3 + 4i
print(c) # Выведет: 3 + 4i
# Использование
*\_ и repr* и
print(repr(c)) # Выведет: ComplexNumber(3, 4)
```
Метод str возвращает понятное для пользователя строковое представление объекта, используемое функцией str()
и print()
. Метод repr возвращает официальное строковое представление объекта, используемое функцией repr()
и интерактивной оболочкой, и часто предназначен для отладки.
? Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1096 вопроса на Python разработчика. Ставь ? если нравится контент
? База собесов | ? База тестовых
Architec.Ton is a ecosystem on the TON chain with non-custodial wallet, swap, apps catalog and launchpad.
Main app: @architec_ton_bot
Our Chat: @architec_ton
EU Channel: @architecton_eu
Twitter: x.com/architec_ton
Support: @architecton_support
Last updated 2 weeks, 2 days ago
Канал для поиска исполнителей для разных задач и организации мини конкурсов
Last updated 1 month ago