Основы ООП в Python: классы, объекты, наследование и конструкторы
Объектно-ориентированное программирование (ООП) в Python
Модель ООП Python позволяет разработчикам моделировать реальные сущности как объекты, определяемые классами. Язык приоритизирует повторное использование кода и модульность, упрощая создание и расширение классов.
Что такое класс?
Класс — логический контейнер, объединяющий данные (атрибуты) и поведение (методы). Он задаёт шаблон для объектов, имеющих общие свойства.
Пример: класс Customer может предоставлять атрибуты transactions, balance, debt и методы deposit() или withdraw().
Определение класса в Python
Выполните эти шаги для создания простого класса:
- Используйте ключевое слово
class:class MyClass: pass - Определите методы внутри класса. Первый параметр каждого метода экземпляра —
self, ссылающийся на сам объект.class MyClass: def greet(self): print("Hello from MyClass") - Создайте экземпляр класса:
obj = MyClass()
- Вызовите его методы:
obj.greet()
Полный пример:
# Рабочий пример класса Python
class MyClass:
def method1(self):
print("Guru99")
def method2(self, text):
print("Software Testing: " + text)
def main():
c = MyClass()
c.method1()
c.method2(" Testing is fun")
if __name__ == "__main__":
main()
Наследование в Python
Наследование позволяет производному классу повторно использовать и расширять поведение базового класса. Python поддерживает как одиночное, так и множественное наследование.
class Base:
def greet(self):
print("Hello from Base")
class Derived(Base):
def greet(self):
super().greet()
print("Hello from Derived")
# Использование
obj = Derived()
obj.greet()
Ключевые моменты:
- Производные классы автоматически наследуют атрибуты и методы.
- Переопределяйте методы, определяя метод с тем же именем в подклассе.
- Вызовите родительский метод явно через
ParentClass.method(self, …)илиsuper().method().
Конструкторы: __init__
Метод __init__ инициализирует новые объекты предопределёнными значениями.
class User:
def __init__(self, name):
self.name = name
def say_hello(self):
print(f"Welcome to Guru99, {self.name}")
user = User("Alex")
user.say_hello()
Вывод: Welcome to Guru99, Alex
Python 2 vs Python 3
Существуют только незначительные синтаксические различия. Приведённый пример работает в обеих версиях с соответствующими print-инструкциями.
Ключевые выводы
- Классы объединяют данные и поведение, определяются ключевым словом
class. - Методы экземпляра используют
selfдля ссылки на объект. - Наследование способствует повторному использованию кода; может быть одиночным или множественным.
- Конструкторы (
__init__) устанавливают начальное состояние новых объектов. - Гибкий синтаксис Python и обработка
selfво время выполнения делают ООП интуитивным.
Python
- Классы и объекты в C#: Фундаменты надёжного ООП
- Объектно-ориентированное программирование в Python: классы, наследование, инкапсуляция и полиморфизм
- Наследование в Python: концепции, синтаксис и практические примеры
- Создание робота на Raspberry Pi и Python: полное руководство
- C++ Struct vs Class: ключевые отличия, синтаксис и лучшие сценарии использования
- Мастерство метода strip() в Python: подробное руководство и практические примеры
- Counter в collections Python: эффективное подсчёт, обновление и арифметические операции
- Понимание type() и isinstance() в Python: практические примеры
- Python list.index(): как находить позиции элементов — практические примеры
- Java: объекты, классы и основные концепции ООП