Keep your place in this quest

Log in or sign up for free to subscribe, follow lesson progress, and access more learning content.

🐍 Python OOP Cheat Sheet

Быстрая шпаргалка по всему, что вы узнали в квесте Python Basics: Object-Oriented Programming.


1. Классы и объекты

Определение класса

class Person:
    def __init__(self, name, age):
        self.name = name      # Публичный атрибут
        self.age = age        # Публичный атрибут

    def greet(self):
        print(f"Hello, my name is {self.name} and I am {self.age} years old.")

Создание объекта

p1 = Person("John", 30)
p1.greet()   # Hello, my name is John and I am 30 years old.

2. Атрибуты и методы

  • Атрибуты = переменные, принадлежащие объекту (self.attribute)
  • Методы = функции, принадлежащие объекту (def method(self):)

Доступ к ним:

print(p1.name)   # Атрибут
p1.greet()       # Метод

3. Наследование

Базовое наследование

class Animal:
    def __init__(self, name):
        self.name = name

    def sound(self):
        print("Some generic sound")

class Dog(Animal):
    def sound(self):
        print("Woof woof!")

dog = Dog("Rex")
dog.sound()  # Woof woof!

4. super()

Вызов конструктора родителя

class Dog(Animal):
    def __init__(self, name, breed):
        super().__init__(name)   # Вызов __init__ Animal
        self.breed = breed

5. Переопределение методов

Дочерние классы могут заменять методы родителя:

class Cat(Animal):
    def sound(self):
        print("Meow!")

6. Приватные атрибуты и методы

Обозначение приватных с __

class Person:
    def __init__(self, name, age):
        self.name = name
        self.__age = age  # Приватный атрибут

    def __print_age(self):  # Приватный метод
        print(self.__age)

    def show_info(self):
        print(self.name)
        self.__print_age()

Прямой доступ к приватным членам приведёт к ошибке:

p = Person("Alice", 25)
p.__age         # ❌ AttributeError
p._Person__age  # ✅ Работает, но не рекомендуется

7. Ключевые термины ООП

Термин Значение
Class Шаблон для объектов.
Object Экземпляр класса с собственными данными.
Attribute Переменная внутри объекта.
Method Функция внутри класса.
Constructor Специальный метод __init__, вызываемый при создании объекта.
Inheritance Механизм повторного использования кода из другого класса.
Overriding Переопределение метода из родительского класса.
super() Вызов методов родительского класса.
Private Префикс __ для обозначения внутреннего использования.

8. Быстрые лучшие практики

  • Используйте PascalCase для имён классов: MyClass
  • Используйте self для ссылки на текущий объект
  • Держите методы сфокусированными на одной задаче
  • Используйте приватные члены для внутренних деталей
  • Вызывайте super().__init__() если переопределяете __init__ в дочернем классе
  • Разумно выбирайте между композицией и наследованием — не наследуйте без причины

📌 Помните: ООП — это мышление в терминах имён существительных (объектов) и их поведения. Моделируйте реальные концепции, держите код организованным и повторно используйте его, где возможно.