Этот вопрос проверяет понимание основных принципов объектно-ориентированного программирования и их применения в Python.
Основные принципы ООП:
Инкапсуляция (Encapsulation): объединение данных и методов, работающих с этими данными, внутри объекта.
Наследование (Inheritance): возможность одного класса использовать функционал другого.
Полиморфизм (Polymorphism): способность методов работать с разными типами данных.
Абстракция (Abstraction): скрытие деталей реализации и предоставление только необходимого интерфейса.
ООП основывается на четырёх ключевых принципах:
Объекты объединяют данные (атрибуты) и поведение (методы). Это позволяет скрыть внутреннюю реализацию и взаимодействовать с объектом только через его интерфейс.
Пример:
class Person:
def __init__(self, name, age):
self.name = name
self.__age = age # Приватный атрибут
def get_age(self):
return self.__age
p = Person("Alice", 30)
print(p.get_age()) # 30
Позволяет одному классу наследовать свойства и методы другого. Это способствует повторному использованию кода.
Пример:
class Animal:
def speak(self):
print("I am an animal")
class Dog(Animal):
def speak(self):
print("I am a dog")
d = Dog()
d.speak() # "I am a dog"
Методы могут работать с разными типами объектов. Это позволяет писать более общий код.
Пример:
class Cat:
def speak(self):
print("Meow")
class Dog:
def speak(self):
print("Woof")
def make_sound(animal):
animal.speak()
make_sound(Cat()) # "Meow"
make_sound(Dog()) # "Woof"
Скрывает детали реализации, предоставляя пользователю только интерфейс.
Пример:
from abc import ABC, abstractmethod
class Shape(ABC):
@abstractmethod
def area(self):
pass
class Circle(Shape):
def __init__(self, radius):
self.radius = radius
def area(self):
return 3.14 * self.radius ** 2
c = Circle(5)
print(c.area()) # 78.5