Классы и объекты
Часть раздела Объектно-ориентированное программирование путешествия по Python на Coddy. Урок 3 из 64.
Классы и объекты служат разным целям. Класс — это чертёж, а объект — это то, что вы создаёте по этому чертежу.
Вот пример класса:
class Dog:
# общее для всех собак
species = "Canis familiaris"Теперь мы можем получить доступ к атрибуту класса напрямую с помощью Dog.species, где Dog — это имя класса:
print(f"Class species: {Dog.species}")
# Вид класса: Canis familiarisЭто обращается к данным самого класса, а не какого-либо конкретного объекта.
Теперь рассмотрим, как это работает с объектами. Создай объекты класса Dog:
dog1 = Dog()
dog2 = Dog()У объектов могут быть индивидуальные атрибуты, которых не может быть у классов:
dog1.name = "Nicky"
dog1.breed = "Siberian Husky"
dog2.name = "Teemon"
dog2.breed = "Shu'ali"Сравни, что могут делать классы и объекты:
print(f"Object 1: {dog1.name} is a {dog1.breed}")
print(f"Object 2: {dog2.name} is a {dog2.breed}")
print(f"Both share class attribute: {Dog.species}")Вывод:
Object 1: Nicky is a Siberian Husky
Object 2: Teemon is a Shu'ali
Both share class attribute: Canis familiarisКлючевое различие: Класс Dog определяет, что общего у всех собак, а объекты dog1 и dog2 представляют собой конкретных отдельных собак с уникальными свойствами.
Задание
ЛегкоДополните код, чтобы создать класс Student и два объекта студентов. Добавьте каждому студенту разные имена и оценки.
student.py: здесь вы определите классStudent.driver.py: основной файл выполнения, который импортирует и использует ваш класс Student:Дополните код, чтобы создать класс
Studentи два объекта студентов. Добавьте каждому студенту разные имена и оценки.Имя student1 —
"Alice", оценка —"A".Имя student2 —
"Bob", оценка —"B".
Попробуйте сами
# Импортируйте класс Student
from student import Student
# TODO: Создайте два объекта класса Student
# TODO: Добавьте атрибуты объекту student1
# TODO: Добавьте атрибуты объекту student2
# Выведите информацию об учениках
print(f"{student1.name} has grade {student1.grade} at {Student.school}")
print(f"{student2.name} has grade {student2.grade} at {Student.school}")В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Объектно-ориентированное программирование
1Основы ООП
Введение в ООПВнешние файлыКлассы и объектыПараметр selfМетодыАтрибутыМетод-конструктор (__init__)Повторение — простой калькулятор4Наследование
Основы наследованияФункция super()Переопределение методовМножественное наследованиеПорядок разрешения методовПовторение: иерархия сотрудников7Специальные методы
Введение в магические методыПерегрузка операторовМагические методы контейнеровПовторение — пользовательский список10Паттерны проектирования. Часть 1
Введение в паттерны проектированияПаттерн «Одиночка»Паттерн «Фабрика»Паттерн «Наблюдатель»Паттерн «Стратегия»2Декораторы
Введение в декораторыДекоратор свойстваДекоратор статического методаДекоратор метода класса5Полиморфизм
Переопределение методов: повторениеУтиная типизацияАбстрактные классы и методыПроектирование интерфейсовПовторение — калькулятор фигур8Продвинутые концепции ООП
Композиция и наследованиеМиксиныСтатические методы и методы классаДекораторы классовМенеджеры контекста11Паттерны проектирования. Часть 2
Паттерн «Команда»Паттерн «Адаптер»Паттерн «Декоратор»Паттерн «Шаблонный метод»Паттерн «Состояние»Паттерн «Компоновщик»3Свойства классов
Переменные экземпляра и классаДекораторы свойствПриватные атрибутыПовторение — менеджер банковского счёта6Инкапсуляция
Публичные, защищённые и приватные членыМодификаторы доступаСокрытие информацииПродвинутые декораторы свойствПовторение — система учёта студентов12Проект: Система управления библиотекой
Обзор проектаКлассы книг и пользователейСистема выдачи книгФункция поискаИнтерфейс администратораТестирование и интеграцияПотренируйтесь самостоятельно: Онлайн-компилятор Python