Классы и объекты
Часть раздела Object Oriented Programming путешествия по 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".
Шпаргалка
Класс — это чертеж, который определяет общие атрибуты и поведение. Объект — это экземпляр, созданный на основе этого класса, обладающий индивидуальными свойствами.
Определение класса:
class Dog:
# Class attribute - shared by all instances
species = "Canis familiaris"Доступ к атрибутам класса напрямую:
print(Dog.species) # Canis familiarisСоздание объектов на основе класса:
dog1 = Dog()
dog2 = Dog()Добавление индивидуальных атрибутов объектам:
dog1.name = "Nicky"
dog1.breed = "Siberian Husky"
dog2.name = "Teemon"
dog2.breed = "Shu'ali"Объекты могут иметь доступ как к своим индивидуальным атрибутам, так и к атрибутам класса:
print(f"{dog1.name} is a {dog1.breed}") # Individual attributes
print(f"Species: {Dog.species}") # Class attributeПопробуйте сами
# Импортируйте класс 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}")В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Object Oriented Programming
1Основы ООП
Внешние файлыВведение в ООПКлассы и объектыПараметр selfМетодыАтрибутыМетод-конструктор (__init__)Повторение — Простой калькулятор4Наследование
Базовое наследованиеФункция super()Переопределение методовМножественное наследованиеПорядок разрешения методовИтоги — Иерархия сотрудников7Специальные методы
Введение в магические методыПерегрузка операторовМагические методы контейнеровПовторение — Пользовательский список10Паттерны проектирования. Часть 1
Введение в паттерны проектированияПаттерн SingletonПаттерн FactoryПаттерн ObserverПаттерн Strategy5Полиморфизм
Снова о переопределении методовУтиная типизацияАбстрактные классы и методыПроектирование интерфейсовИтоги — Калькулятор фигур8Продвинутые концепции ООП
Композиция против наследованияМиксиныСтатические методы и методы классаДекораторы классовМенеджеры контекста11Паттерны проектирования. Часть 2
Паттерн КомандаПаттерн АдаптерПаттерн ДекораторПаттерн Шаблонный методПаттерн СостояниеПаттерн Компоновщик3Свойства классов
Переменные экземпляра и классаДекораторы свойствПриватные атрибутыИтоги — Менеджер банковского счета6Инкапсуляция
Public, Protected, Private члены классаМодификаторы доступаСокрытие данныхДекораторы property: продвинутый уровеньИтоги: Система учета студентов12Проект: Управление библиотекой
Обзор проектаКлассы Book и User