Как выучить ооп в python
Перейти к содержимому

Как выучить ооп в python

  • автор:

Объектно-ориентированное программирование. Методы __init__() и __del__() в Python

24 августа 2013 г. Archy ООП на Python 3

__init__() и __del__() в Python

При создании экземпляра класса интерпретатор автоматически вызывает метод инициализации __init__(). В некоторых языках программирования данные методы принято называть конструктором и деструктором класса. В языке программирования PHP это будет __construct(); __destruct(). Формат метода:

def __init__(self[, [, ]]):

С помощью метода __init__() можно присвоить значения по умолчанию для атрибутах класса. При создании экземпляра класса начальные значения указываются после имени класса в круглых скобках:

Пример использования метода __init__() приведен ниже:

# -*- coding: utf-8 -*- class HexColor: def __init__(self): self.colors = < 'red' : '#ff0000', 'greed' : '#7cfc00', 'blue' : '#4169e1' >hex_color = HexColor() print hex_color.colors['red'] # Получим: #ff0000 # Пример 2: Удваиваем число class DoubleMe: def __init__(self, number): self.result = number * 2 Double = DoubleMe(2) print Double.result # Получим 4

#17 – Основы ООП. Создание класса и объекта

#17 – Основы ООП. Создание класса и объекта

ООП – объектно-ориентированное программирование. Является одной из наиболее важных концепций языка Python. Мы с вами приступаем к изучению теоретической и практической реализации ООП. За урок мы научимся прописывать классы и объекты в языке Питон.

Видеоурок

На начальном этапе ООП – это тёмный лес, в котором многое непонятно и слишком усложнено. На самом деле всё вовсе не так. Предлагаем абстрагироваться от специфических (непонятных) определений и познакомиться с ООП простыми словами.

ООП простыми словами

Поскольку на примере все усвоить гораздо проще, то давайте за пример возьмем робота, которого постараемся описать за счёт классов в ООП.

Класс в случае с роботом – это его чертёж. Экземпляром класса (объектом) называет целый робот, который создан точно по чертежу.

Наследование – это добавление полезных опций к чертежу робота. К примеру, берем стандартный чертёж робота и дорисуем к нему лазеры, крылья и броню. Все эти дорисовки мы сделаем в классе наследнике, основной функционал которого взят из родительского класса.

Полиморфизм – это общий функционал для всех роботов и не важно что каждый робот может очень сильно отличаться друг от друга. К примеру, в главном классе мы указываем возможность передвижения для всех последующих роботов. Далее в классе наследнике мы можем дополнительно указать возможность левитации для робота, в другом же классе укажем возможность передвижения по воде и так далее. Получается, что есть общий функционал что записан в главном чертеже, но его можно переписать для каждого последующего робота (для каждого наследника).

А инкапсуляция является для нас бронёй, защищающей робота. Под пластырем брони находятся уязвимые элементы, вроде проводов и микросхем. После прикрытия брешей с помощью брони ( protected или private ), робот полностью защищён от внешних вмешательств. По сути, мы делаем доступ ко всем полям лишь за счёт методов, тем самым прямой доступ к полю будет закрыт.

У всех классов методы могут отличаться, как и поля с конструкторами. Каждый класс позволяет создавать любое количество разных объектов, все из них имеют собственные характеристики.

Создание классов

Для создания класса необходимо прописать ключевое слово class и далее название для класса. Общепринято начинать названия классов с буквы в верхнем регистре, но если этого не сделать, то ошибки не будет.

В любом классе можно создавать поля (переменные), методы (функции), а также конструкторы.

Создав новый класс и поместив туда какую-либо информацию мы можем создавать на основе него новые объекты. Объекты будут иметь доступ ко всем характеристикам класса.

Пример простого класса приведен ниже:

class Book: pass # Класс может ничего не возвращать

На основе такого класса мы можем создать множество объектов. Каждый объект в данном случае будет представлять из себя конкретную книжку. Для каждого объекта мы можем указать уникальные данные.

Чтобы создать объект нам потребуется следующий код:

obj_new = Some() # Создание объекта obj_second = Some() # Создание 2 объекта

Простой класс Cat

class Cat: name = None age = None isHappy = None cat1 = Cat() cat1.name = "Barsik" cat1.age = 3 cat1.isHappy = True cat2 = Cat() cat2.name = "Жопен" cat2.age = 2 cat2.isHappy = False print(cat1.name) print(cat2.name)
Посмотреть остальной код можно после подписки на проект!

Задание к уроку

Необходимо оформить подписку на проект, чтобы получить доступ ко всем домашним заданиям

Большое задание по курсу

Вам необходимо оформить подписку на сайте, чтобы иметь доступ ко всем большим заданиям. В задание входит методика решения, а также готовый проект с ответом к заданию.
PS: подобные задания доступны при подписке от 1 месяца

Как изучить ООП на Python?

Здравствуйте, освоил процедурное программирование писал несколько простых игр на python ,также решал задачи на pychekio,питон тьютор,привык к языку,освоил основные начальные темы :
переменные,функции,условия,коллекции,циклы и другое.
наверное стоит переходить к ооп хотя бы узнать и опробовать что это такое ,можете подсказать хорошие книги/статьи/видео на youtube чтобы понять эту тему и очень ВАЖНО как ее применять,практику,почему это такая важная часть современного программирования ,a также дайте совет что делать дальше ,я имею в виду после изучения ооп,что стоит пробовать?

  • Вопрос задан более трёх лет назад
  • 3745 просмотров

2 комментария

Простой 2 комментария

longclaps

ООП тебе, пожалуй, рановато — нужно подтянуть общую грамотность.

kopylov_vlad

Владислав Копылов @kopylov_vlad

Когда то кодил на python. Считаю что python плохо подходит для ООП парадигмы. Советую прочитать главу «Object-oriented programming» из книги «The Hitchhiker’s Guide to Python». link

Решения вопроса 0
Ответы на вопрос 2

Синтаксис для ООП описан практически во всех современных учебниках по python.
В начале изучаем его. Как написать класс. Как создать экземпляр объекта и взаимодействовать с его атрибутами и методами. Привыкаем к self.

Далее более осознано применяем библиотеки, использующие ООП, и изучаем SOLID.

Потом всю оставшуюся жизнь учимся писать свои классы, создавая годные абстракции предметных областей.

Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать

x67

Ну вот и напишите игру. Пошаговую. Для двух игроков. Сетевую. С классами действий и объектов. Эти самые действия и объекты передавайте сериализацией в json и http запросами. Конечно так не всегда делается, но как явный пример — очень хороший вариант.
Джанго наверное не стоит, так как это все таки целый фреймворк, который хоть и работает с классами, но имеет много своих особенностей. Для передачи данных можно пользоваться библиотекой requests — быстро, просто и удобно. Для получения данных лучше джанги в этом случае будет flask — опять же из за простоты.

Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

python

  • Python

Почему не проходит код для решения задачи на leetcode?

  • 1 подписчик
  • 9 минут назад
  • 11 просмотров

python

  • Python
  • +1 ещё

Почему текстовый редактор и консоль по-разному присваивают ссылки на переменные Python?

  • 1 подписчик
  • 31 минуту назад
  • 13 просмотров

Изучение ООП в Python [дубликат]

Вообще-то довольно странный вопрос. Более простые: с чего начинать изучение Питона, с чего начинать изучение ООП. А данный вопрос несколько непонятен.

5 июл 2011 в 12:09

Большая часть ссылок уже не работает, а упоминаемые книги уже есть в «Книгах и учебных ресурсах по Python».

3 дек 2019 в 7:23

8 ответов 8

Сортировка: Сброс на вариант по умолчанию

Я начинал с Марка Лутца(4-е издание). не скажу что много узнал,(много в этой книге упущено, несмотря на ее объем в 1200 страниц), хотя многому с него научился, пока всего 2 месяца изучаю питон..

Отслеживать
ответ дан 7 дек 2011 в 6:46
119 2 2 серебряных знака 17 17 бронзовых знаков
Лутц очень размыто излагает, ИМХО, лучше книга М. Саммерфилда по 3-му Python
10 апр 2012 в 8:40

С Главы III TaPL.

Отслеживать
ответ дан 5 июл 2011 в 13:10
330 1 1 серебряный знак 6 6 бронзовых знаков
не надо сквернословить. 🙂
24 апр 2012 в 7:16

Заглянуть в вики.

  • Python Programming/Object-oriented programming
  • Объектно-ориентированное программирование на Питоне

Отслеживать
ответ дан 5 июл 2011 в 13:55
Nicolas Chabanovsky Nicolas Chabanovsky
51.2k 86 86 золотых знаков 266 266 серебряных знаков 505 505 бронзовых знаков

Вот вам боянистый блогопост. Прочитаете с удовольствием и сразу поймете ООП — Python, блэкджек и. ну вы поняли:)

Отслеживать
ответ дан 31 окт 2011 в 9:13
Андрей Басалыга Андрей Басалыга
1,672 13 13 серебряных знаков 15 15 бронзовых знаков
Отслеживать
ответ дан 7 июл 2011 в 9:11
hamstertamer hamstertamer
101 1 1 золотой знак 3 3 серебряных знака 14 14 бронзовых знаков

По-моему любой язык программирования требует практики и все они очень похожи! Я бы посоветовал просто начать писать. вы пишите программу, а язык это дело второе! Начните с очередного «Hello World» и неплохие примеры: решение квадратных уравнений, стрельба из пушки. Со справочникам по функциям всё будет успешно

Отслеживать
ответ дан 17 ноя 2011 в 13:55
81 2 2 серебряных знака 4 4 бронзовых знака

Все они чем-то похожи и все они чем-то разные. Но вот изучение декларативных языков после изучения императивных (а ещё хуже — после опыта работы) — может стать проблемой. Правда тема — ООП, так что упоминать декларативные не совсем уместно.

17 ноя 2011 в 14:27

Попробуйте почитать Пилгрима (Mark Pilgrim) Dive into Python. У него там отличные примеры разбираются, да и книжка в целом замечательная.

Отслеживать
ответ дан 22 июл 2013 в 10:02
mind_mixer mind_mixer
441 3 3 серебряных знака 9 9 бронзовых знаков
Отслеживать
371 1 1 золотой знак 5 5 серебряных знаков 13 13 бронзовых знаков
ответ дан 30 окт 2011 в 20:55
ShestakoffVS ShestakoffVS
238 1 1 серебряный знак 11 11 бронзовых знаков

  • python
  • ооп
    Важное на Мете
Связанные
Похожие

Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.11.15.1019

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *