Клас
Шаблон для створення об'єктів. Визначає властивості (атрибути) та поведінку (методи).
Шаблон для створення об'єктів. Визначає властивості (атрибути) та поведінку (методи).
class Dog:
def __init__(self, name, breed):
self.name = name
self.breed = breed
Об'єкт
Представляє конкретну сутність з структурою та поведінкою, визначеними класом. Екземпляр класу.
my_dog = Dog("Buddy", "Golden Retriever")
Абстракція — це приховування складності системи та показ тільки основних деталей. Досягається за допомогою абстрактних класів та методів.
from abc import ABC, abstractmethod
class Vehicle(ABC):
@abstractmethod
def move(self):
pass
class Car(Vehicle):
def move(self):
print("Car moves on wheels")
car = Car()
car.move() # Output: Car moves on wheels
Наслідування — механізм для створення нового класу (підкласу) з існуючого класу (батьківського). Підклас успадковує атрибути та методи від батьківського класу.
class Animal:
def speak(self):
print("Animal speaks")
class Dog(Animal):
def speak(self):
print("Dog barks")
my_dog = Dog()
my_dog.speak() # Output: Dog barks
Інкапсуляція — це приховування внутрішнього стану об'єкта та показ тільки основних деталей. Досягається через використання приватних або захищених атрибутів і надання методів для отримання та встановлення значень (getter/setter).
class Person:
def __init__(self, name, age):
self.__age = age # Приватний атрибут
self.name = name
def get_age(self):
return self.__age
def set_age(self, age):
if age > 0:
self.__age = age
else:
print("Invalid age")
Поліморфізм — це здатність використовувати метод різними способами залежно від об'єкта. Досягається через перевизначення або перевантаження методів.
class Shape:
def draw(self):
print("Drawing a shape")
class Circle(Shape):
def draw(self):
print("Drawing a circle")
shape = Shape()
shape.draw() # Output: Drawing a shape
circle = Circle()
circle.draw() # Output: Drawing a circle
Перекладено з: [Object Oriented Programming](https://medium.com/@michelamax2000610/object-oriented-programming-cafe21b3a291)