- Головна
-
- Встановлення Python.
- Налаштування віртуального оточення
- Типи даних
- Математичні оператори
- Встроїні функції
- Бібліотеки Python
- Колекція List
- Кортежі Tuple
- Множини (Set)
- Рядки Str
- Список escape-символів
- Колекція Dictionary
- Множина frozenset
- Класи та об'єкти
- Винятки
- Пакетні менеджери
- Перевантаження операторів
- Робота з файлами та директоріями
- HttpClient
- HTTPServer
- Модуль socket
- Робота з пошту
- Багатопоточність
- Асинхронні методи
- Event Loop
- Обхід GIL
- Черга deque
- Масиви постійного розміру
-
- Webpack. Базове складання проекту
- GULP. SCSS. Налаштування оточення
- SCSS стилі особливості
- Шпаргалка SQL
- MySQL dump
- Git команди
- Розгорнути ssh git репозиторію на сервері
- Консольні команди
- Декілька версій PHP на сервері
- PHPStorm+xDebug+OpenServer
- PHPUnit + OpenServer
- Додати застосунок з Windows Store в автозавантаження
- Зовнішні посилання
Класи та об'єкти
Клас - це шаблон або схема для створення об'єктів, яка визначає атрибути і методи, характерні для всіх об'єктів цього типу. Класи дозволяють організувати дані та функції, які працюють з цими даними, в єдине ціле.
Об'єкт - екземпляр класу. Кожен об'єкт має стан (визначається атрибутами) і поведінку (визначається методами).
Інкапсуляція - полягає в прихованні внутрішньої реалізації класу та наданні інтерфейсу для взаємодії з об'єктами цього класу. Це допомагає захистити дані та керувати доступом до них.
Наслідування -дозволяє одному класу (дочірньому) успадкувати атрибути і методи іншого класу (батьківського). Це сприяє повторному використанню коду і спрощенню його підтримки.
Поліморфізм -дозволяє використовувати єдиний інтерфейс для роботи з об'єктами різних класів. Це досягається за рахунок перевизначення методів у дочірніх класах, які успадковуються від батьківських.
Абстракція - полягає у виділенні загальних характеристик об'єктів і створенні класів, які представляють ці загальні характеристики. Це допомагає спростити складні системи і поліпшити їх зрозумілість.
class MyClass:
# Методи об'єкта
def instance_method(self):
print(type(self)) # <class 'MyClass'>
# Методи класу
@classmethod
def class_method(cls):
print(type(cls)) # <class 'type'>
# Статичний метод
@staticmethod
def static_method():
return "Цей метод не залежить від екземпляра або класу"
my_object = MyClass()
my_object.instance_method()
MyClass.class_method()
MyClass.static_method()Змінні класу
class MyClass:
attribute = "Я атрибут класу"
@classmethod
def class_method(cls):
print(MyClass.attribute) # Я атрибут класу
def set_name(self, name):
self.name = name
def print_name(self):
print(self.name)
my_object = MyClass()
print(MyClass.attribute) # Я атрибут класу
my_object.set_name("Поле об'єкта за ім'ям name")
my_object.print_name() # "Поле об'єкта за ім'ям name"Конструктор
class Cat:
def __init__(self, name, age):
if age < 0: raise ValueError("Вік не може бути від'ємним")
self.name = name
self.age = age
# Створення об'єкта Cat з ім'ям і віком
barsik = Cat("Barsik", 5)
print(f"Ім'я кота: {barsik.name}, вік: {barsik.age}") # Вивід: Ім'я кота: Barsik, вік: 5Створення класу за допомогою type()
MyClass = type('MyClass', (), {
'attribute': 42,
'__init__': lambda self, value: setattr(self, 'value', value),
'display_value': lambda self: print(self.value)
})
# Створюємо екземпляр класу
instance = MyClass(10)
print(instance.attribute) # Output: 42
instance.display_value() # Output: 10Рівні доступу
У Python існують різні рівні доступу до атрибутів і методів класів, які допомагають контролювати видимість і захищеність даних. Основні механізми управління доступом включають використання одного або двох підкреслень (_ і __) перед іменем атрибута або методу.
Одне підкреслення (protected) _ використовується для атрибутів і методів, які не повинні використовуватися поза класом або модулем. Це не заборонено, але це угода, яку слід дотримуватися для кращої читабельності та підтримки коду.
Два підкреслення (private) __ використовуються для атрибутів і методів, які повинні бути дійсно приватними і захищеними від випадкового або навмисного доступу ззовні. Механізм name mangling робить їх менш доступними, але все ще доступними через спеціальні імена.