Уроки программирования Python для начинающих: бесплатные видео для самостоятельного обучения
Уроки программирования Python для начинающих: бесплатные видео для самостоятельного обучения
Один из самых популярных языков программирования за последние несколько лет, Python используется в веб-приложениях, машинном обучении, анализе данных, автоматизации процессов. Имеет возможности динамической типизации, автоматического управления памятью, полной интроспекции, поддержки многопоточных вычислений, а также удобные структуры данных и механизм обработки исключений.
Подборка бесплатных видео уроков по языку Python на ВСЕ КУРСЫ ОНЛАЙН будет хорошим стартом в изучении с нуля, поможет углубить знания в обширном мире программирования.
Установка
В ролике показано, где скачать и как установить Python. На официальном сайте есть две версии, но загружать лучше последнюю, 3-ю версию. Загружается на компьютер и сразу становится доступной для работы. На рабочем столе не появляется никаких ярлыков – установку можно проверить через пуск, зайдя в Command Prompt. Здесь появится сообщение о версии, и можно начинать работу.
Введение
Огромную популярность Python приобрел благодаря легкости в изучении, простому синтаксису, краткости, возможности использования большого количества библиотек, а также распространенностью среди IT-компаний. В уроке рассказывается об основах программирования, возможностях применения, крупнейших приложениях, написанных с помощью «питона». Также описываются среды для разработки кода (IDE, текстовый редактор, Jupyter Notebook) и начало работы в программе.
Переменные
Видеоурок познакомит с основами языка, модулями, областями применения, поможет написать простенькие программы. Для написания кода используется интерактивная оболочка, которая устанавливается вместе с программным пакетом, также можно воспользоваться внешним редактором. Чтобы изучить все переменные, которые используются, требуется много времени.
Приложение о погоде
Мастер-класс по созданию метео-приложения, которое будет отображать нынешнюю погоду в определенном городе. Реализовываться задача будет с помощью Python и библиотеки Django. Дополнительно понадобится редактор Atom и сайт openweathermap.org для получения прогнозов онлайн. Внутри Atom создается папка с будущим проектом приложения. Для выполнения будут необходимы начальные знания языка программирования. Пошаговое выполнение поможет разобраться во всех тонкостях работы.
Устройство Python
Здесь рассказывается о программе, принципах работы, превращении текстового файла в рабочий код, методах реализации и функционирования. По факту код — набор команд, которые требуют реализации. Как правило, это обычная программа, написанная на другом языке, которая считывает написанную информацию и превращает в рабочую программу (CPython, Cython, Iython и др. ). Питон преобразует информацию в байт-код, который потом считывается компьютером.
Переменные
Новички узнают о проработке, выводах, присвоении значения и многое другое. Переменная представляет некую ячейку в памяти, куда можно поместить информацию. Ссылаются на ячейку благодаря присвоенному имени. Нельзя начинать с цифровых значений.
Типы данных
Краткий обзор данных, которые можно использовать при написании программы. Целые числа (1, 150, 500), строки (упорядоченный набор символов), списки (упорядоченная последовательность объектов), вещественные числа (числа с точкой или запятой), словарь и отображение (набор неупорядоченных пар ключ: значение), множества (неупорядоченный набор неуникальных объектов) и т.д. — все это данные, которые имеют свой тип и описание.
Функции
Советы новичкам
Придерживаясь рекомендаций, можно избежать многих ошибок и довольно быстро выйти на хороший уровень программирования, писать более чистый код. Сразу начинайте изучать последнюю 3-ю версию, потому что предыдущая устарела и не имеет поддержки. В обучении лучше сочетать теорию с наглядными примерами из практики. Постарайтесь узнать все сильные стороны языка и возможности использования. Чтобы свободно себя чувствовать в мире IT, необходимо приложить много усилий и научится усидчивости, дотошности в постановке и выполнении задач.
Бесплатный курс
Видеокурс рассчитан на новичков, которые только начинают осваивать программирование. Состоит из 25 лекций, где подробно рассказывается об начальных необходимых знаниях для работы.
Смотрите также:
Пример работы с видео в Python. В примере из видео достают кадры и конвертируют их в numpy-вектора размером `32 X 32`. После из полученных векторов собирают новое видео. Создано по мотивам http://ru.stackoverflow.com/questions/519636/#551344 · GitHub
Пример работы с видео в Python. В примере из видео достают кадры и конвертируют их в numpy-вектора размером `32 X 32`. После из полученных векторов собирают новое видео. Создано по мотивам http://ru.stackoverflow.com/questions/519636/#551344 · GitHubInstantly share code, notes, and snippets.
import av | |
from av.video.frame import VideoFrame | |
from av.video.stream import VideoStream | |
# В этом списке будем хранить кадры в виде numpy-векторов. | |
array_list = [] | |
# Откроем контейнер на чтение | |
input_container = av.open(‘input.mp4’) | |
# Применим «инверсное мультиплексирование» =) | |
# Получим пакеты из потока. | |
input_packets = input_container.demux() | |
# Получии все кадры видео и положим их в `array_list`. | |
for packet in input_packets: | |
if isinstance(packet. stream, VideoStream): | |
# Получим все кадры пакета | |
frames = packet.decode() | |
for raw_frame in frames: | |
# Переформатируем кадры, к нужному размеру и виду. | |
# Это лучше делать средствами pyav (libav) | |
# потому что быстрее. | |
frame = raw_frame.reformat(32, 32, ‘rgb24’) | |
# Превратить каждый кадр в numpy-вектор (dtype=int). | |
array = frame.to_nd_array() | |
# Положим в список numpy-векторов. | |
array_list += [array] | |
# Откроем контейнер на запись. | |
output_container = av.open(‘out.mp4′, mode=’w’, format=’mp4′) | |
# Добавим к контейнеру поток c кодеком h364. | |
output_stream = output_container.add_stream(‘h364’, rate=25) | |
# В этом списке будем хранить пакеты выходного потока. | |
output_packets = [] | |
# Пройдем по списку векторов и упакуем их в пакеты выходного протока. | |
for array in array_list: | |
# Построим видео-кадр по вектору. | |
frame = VideoFrame.from_ndarray(array, format=’rgb24′) | |
# Запакуем полученный кадр. | |
packet = output_stream.encode(frame) | |
# Положим в список пакетов. | |
output_packets += [packet] | |
# Применим «прямое мультиплексирование» =) | |
# Для каждого пакета вызовем мультиплексор. | |
for packet in output_packets: | |
if packet: | |
output_container. mux(packet) | |
output_container.close() |
Бесплатный видеокурс «Научись программировать на Python»
Python — это наиболее прогрессирующий и актуальный язык программирования за последние несколько лет. Если вы никогда не сталкивались с написанием кода для веб-приложений и ищете что бы такого по теме изучить, то советуем обратить внимание именно на этот язык. Тем более, что у вас есть возможность скачать бесплатный курс по теме https://srs.myrusakov.ru/freepython и ознакомиться с ним на практике.Python является достаточно удобным в использовании и простым. Помимо этого, у него есть довольно большое разнообразие готовых библиотек, которые предназначены для решения всевозможных задач. Язык используют огромное количество мировых известных компаний. К примеру: Youtube, Spotify, Amazon, Instagram и так далее.
С помощью данного ЯП у организаций появляется возможность:
- Проще разрабатывать и развивать машинное обучение. Netflix создали свой сервис с рекомендациями именно на языке Python.
- Строить гипотезы, анализировать пользовательскую активность и планировать будущие стратегии развития самого бизнеса.
- Проводить автоматизацию действий, которые раньше выполнялись вручную людьми. Допустим, вам необходимо скачать и сохранить в отдельную папку все картинки или ссылки с какого-то определенного сайта. В целях экономии времени и сил, самый обычный скрипт на Python сделает это за вас.
Можно реально восхищаться всеми доступными функциями и возможностями, которые Python предлагает разработчику.
Курс «Программирование на Python для начинающих»
По ссылке в начале статьи вы можете получить доступ к бесплатному курсу Михаила Русакова, посвященному Python.
Среди его преимуществ можно выделить:
- За данную информацию вам не надо ничего платить! Просто подписываетесь и получаете ссылку для загрузки.
- Также при скачивании обучалки, Михаил Русаков даёт каждому участнику 25% скидку на приобретение более продвинутого курса по теме — «Программирование на Python с нуля до гуру».
- Весь материал подан простым и понятным языком, нету лишней воды или каких-либо отклонений от главной темы.
После отправки своего имени и email в специальной форме, вы получаете на почту ссылку для подтверждения подписки и переходите на страницу с линком для загрузки курса. Скачав файл-архив и распаковав его, сможете открыть страницу с видеороликами. Free-версия содержит базовую информацию для введения в курс дела — основные азы программирования на Python.
Если материал вам понравится, сможете продолжить изучать его более профессионально на платном курсе.
По завершению процесса обучения перед вами открывается уникальная возможность создавать любые программы на языке Python, автоматизировать и синхронизировать множество технических процессов, реализовать взаимодействие клиент-сервер, постичь основы ООП и др. В качестве бонус предлагается урок по созданию калькулятора и игры на Python.
Многие задаются вопросом — а зачем он нужен простым людям, которые никак не связанны с программированием и IT-сферой в целом? Ответ очень прост и очевиден — саморазвитие и дальнейшее повышение квалификации. Если трудитесь в IT-сфере или, например, подаете заявку на вакансию в IT-компанию, то знание языка программирования Python покажет вас в лучшем свете среди всех остальных претендентов на должность. Да, и вообще сейчас все больше работодателей нуждаются в сотрудниках, которые имеют хоть какие-то навыки программирования, даже на начальном уровне.
Видеокурс по Python. Полное руководство.
Краткое описание курса по Питону
- Впервые в рамках одного курса связка Python и Tkinter GUI;
- Низкий порог для входа; идеально подходит для новичков;
- Универсальный скриптовый язык, что идеально подходит для платформ любого типа;
- Возможность развить реальные практические навыки и получить четыре работы в портфолио;
- Возможность для быстрого старта и эффективный план действий для новичков в виде пошаговой инструкции;
- Наличие универсальных модулей и библиотек для решения сложнейших задач;
Возможность стать настоящим профессионалом даже новичку.
Python — весьма востребованный, прогрессивный, качественный скриптовый язык программирования, предлагающий весьма низкий порог вхождения для людей, желающих начать его изучение. Отличительной особенностью данного языка является достаточно простым в процессе использования синтаксис, что делает его идеальным инструментом в процессе программирования как для новичков, так и для тех, кто желает сменить направление деятельности в IT.
Многие компании в сфере IT готовы брать на работу даже новичков в виде стажеров, не говоря уже о более опытных специалистах, Несмотря на то, что язык является относительно легким, он способен решать наиболее сложные задачи в процессе написания достаточно сложных кодов.
Разделы видеокурса
В состав курса входит два крупных раздела, включающих в себя 72 урока с продолжительностью около 23 часов.
Раздел первый включает в себя тщательно систематизированную и актуальную информацию теоретического характера по Питону последней и самой актуальной версии с множеством практических занятий, призванных закрепить полученные знания путем самостоятельной проверки.
Второй раздел посвящен исключительно процессу изучения библиотеки Tkinter, предоставляющей возможность создавать качественные и функциональные приложение с графическим интерфейсом (GUI) для различных платформ, в отличие от упрощенных консольных версий. Содержит множество заданий для самопроверки и практических уроков для закрепления полученных знаний.
Кому будет полезен данный курс по Python:
- Новичкам, желающим найти своим знаниям и навыкам реальное практическое применение
- Опытным IT-программистам, желающим овладеть принципиально новым, прогрессивным и достаточно простым языком программирования для того, чтобы получить высокооплачиваемую и достойную работу.
В результате прохождения 2-ой части курса каждый участник, повторяя за автором, создаст четыре уникальных исполняемых десктопных приложения с функциональным графическим интерфейсом под ОС WIN (.exe), шаг за шагом продвигаясь от наиболее простых к более сложным вариантам.
OpenCV на python: получение кадров, смена цветовой модели и размытие
OpenCV — это мощная библиотека машинного зрения, которую часто применяют в роботах для распознавания объектов окружающего мира. В одной из статей мы подробно описали установку OpenCV на одноплатный компьютер Raspberry Pi 3.
Переде тем как приступить непосредственно к функциям машинного зрения, нам необходимо познакомиться со вспомогательными функциями, необходимыми для работы с видеопотоком. В этом уроке мы попробуем получить кадры с видеокамеры и применим к ним различные преобразования: отражение, смена цветовой модели, размытие.
Все программы мы будем писать на языке python и запускать на Raspberry Pi 3.
Подготовка к написанию первой программы
Шаг 1. Если в ходе установки OpenCV вы использовали виртуальное окружение, то перед запуском python-скриптов необходимо перейти в это окружение с помощью команд:
$ source ~/.profile $ workon cv
Шаг 2. Для дальнейшей работы нам потребуются три дополнительных python-модуля:
- video.py
- common.py
- tst_scene_render.py
Найти эти модули можно в папке с примерами: /home/pi/Downloads/opencv-master/samples/python
Создадим в домашней папке, папку opencv и скопируем в неё эти модули:
$ cd ~ $ mkdir opencv $ cp /home/pi/Downloads/opencv-master/samples/python/video. py . $ cp /home/pi/Downloads/opencv-master/samples/python/common.py . $ cp /home/pi/Downloads/opencv-master/samples/python/tst_scene_render.py .
Шаг 3. Теперь создадим в этой же папке файл с нашей программой.
$ touch eye.py
Шаг 3. Редактировать программу можно в любом приложении. Если нет предпочтений, то рекомендуем использовать редактор Nano. Откроем в нём недавно созданный файл:
$ nano eye.py
Шаг 4. После того как программа будет написана, сохраним изменения с помощью комбинации клавиш Ctrl+o, нажмем Y для подтверждения. Затем нажмем Ctrl+x для выхода из редактора.
Получение кадров с камеры и вывод в окно
Наша программа будет в бесконечном цикле получать кадры с камеры и отображать их в специальном окне. Алгоритм программы:
Код на языке python:
import cv2
import video
if __name__ == '__main__':
# создаем окно с именем result
cv2. namedWindow( "result" )
# создаем объект cap для захвата кадров с камеры
cap = video.create_capture(0)
while True:
# захватываем текущий кадр и кладем его в переменную img
flag, img = cap.read()
try:
# отображаем кадр в окне с именем result
cv2.imshow('result', img)
except:
cap.release()
raise
ch = cv2.waitKey(5)
if ch == 27:
break
cap.release()
cv2.destroyAllWindows()
Примечание. Функция create_capture имеет всего один аргумент, который отвечает за индекс камеры в нашей системе. В случае, если камера всего одна, её индекс будет равен 0.
Запускаем python-скрипт:
$ python eye.py
Если в программе нет ошибок, откроется окно с видео.
Отражение картинки по вертикали и горизонтали
В предыдущей программе мы брали каждый кадр, полученный с камеры и отображали его в неизменном виде. Теперь в разрыв между этими двумя операциями добавим третью — отражение кадра:
За отражение кадра отвечает функция:
flip( кадр, направление )
Здесь кадр — кадр видеопотока, который нужно отразить;
направление — флаг, определяющий направление отражения: 0 — по-горизонтали, 1 — по-вертикали, -1 — по горизонтали и вертикали одновременно.
В действительности, разные веб-камеры могут по-разному реагировать на вертикальное и горизонтальное отражение. Например, в используемой в этом уроке Logitech С110 вертикаль и горизонталь поменяны местами.
import cv2
import video
if __name__ == '__main__':
# создаем окно с именем result
cv2.namedWindow( "result" )
# создаем объект cap для захвата кадров с камеры
cap = video.create_capture(0)
while True:
# захватываем текущий кадр и кладем его в переменную img
flag, img = cap.read()
try:
# отражаем кадр
img = cv2. flip(img,0)
# отображаем кадр в окне с именем result
cv2.imshow('result', img)
except:
cap.release()
raise
ch = cv2.waitKey(5)
if ch == 27:
break
cap.release()
cv2.destroyAllWindows()
Результатом будет:
Смена цветовой модели
Цветовая модель — это модель представления цвета каждой точки с помощью группы чисел. Некий цветовой код. Например, в RGB цвет определяется тремя компонентами: красный, зеленый и синий. Любая веб-камера передает кадры именно в такой модели. А в HSV у каждой точки есть цветовой тон — H, насыщение — S и яркость — V.
Некоторые функции машинного зрения проще реализовать в какой-то конкретной модели. Например, в дальнейших уроках мы увидим, что распознавание цветовых пятен на картинке лучше работает в модели HSV.
Для преобразования цветовой модели используем функцию:
cvtColor( кадр, модель )
где модель — код преобразования:
- COLOR_GRAY — в оттенки серого;
- COLOR_RGB2HSV — из RGB в HSV;
- COLOR_BGR2HSV — из BGR в HSV;
- COLOR_HSV2BGR — обратно, из HSV в BGR;
- и т.д.
OpenCV поддерживает много моделей, но нам потребуются пока только эти три: RGB, HSV и оттенки серого.
Примечание. По-умолчанию, кадр с камеры приходят в модели BGR, а не RGB, поэтому для преобразования необходимо использовать флаг COLOR_BGR2HSV.
import cv2
import video
if __name__ == '__main__':
# создаем окно с именем result
cv2.namedWindow( "result" )
# создаем объект cap для захвата кадров с камеры
cap = video.create_capture(0)
while True:
# захватываем текущий кадр и кладем его в переменную img
flag, img = cap.read()
try:
# меняем цветовую модель на HSV
img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV )
# отображаем кадр в окне с именем result
cv2.imshow('result', img)
except:
cap.release()
raise
ch = cv2.waitKey(5)
if ch == 27:
break
cap.release()
cv2.destroyAllWindows()
Результат работы программы:
Если в программе заменим COLOR_BGR2HSV на COLOR_GRAY, получим такую картинку:
Размытие по Гауссу
Часто, изображение с веб-камер страдает наличием большого количества шумов. Особенного это заметно, когда камере не хватает освещения. Для частичного решения этой проблемы применяют фильтр Гаусса, или другими словами размытие по Гауссу (Gaussian blur).
Функция имеет 3 аргумента:
GaussianBlur( кадр, размер ядра, отклонение)
размер ядра — список из двух чисел (x,y), которые задают размер ядра фильтра Гаусса по горизонтали и вертикали. Чем больше ядро, тем более размытым станет кадр;
отклонение — стандартное отклонение по оси X.
import cv2
import video
if __name__ == '__main__':
# создаем окно с именем result
cv2.namedWindow( "result" )
# создаем объект cap для захвата кадров с камеры
cap = video.create_capture(0)
while True:
# захватываем текущий кадр и кладем его в переменную img
flag, img = cap.read()
try:
# размываем кадр
img = cv2.GaussianBlur(img, (5, 5), 2)
# отображаем кадр в окне с именем result
cv2.imshow('result', img)
except:
cap.release()
raise
ch = cv2.waitKey(5)
if ch == 27:
break
Посмотрим на результат:
Надо отметить, что в OpenCV есть и другие фильтры для удаления шума: медианный фильтр, двухсторонний фильтр и усреднение.
В следующем уроке поговорим о наложении на картинку текста и графики. Это понадобится нам для выделения на кадре интересующих нас областей, а также для вывода прямо в кадр, например, координат точек и величину FPS.
Вконтакте
Learn Python — Best Python Tutorials (2021)
Что такое Python
Python — это динамический общий язык программирования, используемый во многих областях, включая веб-разработку, науку о данных, научные вычисления, интерфейсы приложений и многое другое. Python поддерживает множество парадигм программирования, таких как объектно-ориентированное программирование, императивное программирование и функциональное программирование. Python наиболее известен своей удобочитаемостью кода и значительными пробелами. Сообщество является ключевой частью Python, многие из его самых популярных пакетов создаются с открытым исходным кодом отдельными участниками.
Зачем изучать Python
Python признан разработчиками одним из самых любимых языков программирования. Любовь к Python привела к массовому внедрению как в технологической индустрии, так и в академических кругах. Этот язык также имеет широкое применение, что дает вам возможность использовать его множеством способов. Python был создан почти тридцать лет назад, но со временем его популярность продолжает расти. Широкое применение языка и простота изучения делают его идеальным выбором для любого программиста, от новичка до продвинутого.
До изучения Python
Python делает упор на удобочитаемость для разработчиков. Этот аспект делает изучение языка идеальным для начинающих. Вы можете начать изучение Python, не имея опыта программирования. Многие университеты преподают его в качестве первого языка в своих программах по информатике или по дисциплинам на других факультетах. Python имеет смысл учиться с первого дня, но он остается полезным по мере вашего продвижения в качестве инженера-программиста.
Как gitconnected поможет вам изучить Python и найти лучшие учебные пособия
gitconnected предлагает огромный выбор руководств по Python, от новичков до продвинутых.У нас есть курсы для любого стиля обучения — вы можете пройти вместе с интерактивными курсами программирования, изучить Python по видео или найти книги и статьи, обучающие языку программирования Python. gitconnected позволяет вам найти лучшие бесплатные учебные пособия по Python или открыть для себя платные курсы. Учебные пособия по Python отправляются и оцениваются разработчиками, чтобы вы всегда учились на лучшем контенте Python. Python имеет приложения, включая веб-разработку, науку о данных, сценарии и программирование приложений, а gitconnected дает вам возможность изучать Python в зависимости от того, какой путь соответствует вашим интересам.Следите за всеми обновлениями Python с помощью ленты новостей на домашней странице gitconnected.com.
Полный курс Python [видео]
Описание видео
Освойте концепции Python и ООП и структурируйте свои программы как профессионал
Об этом видео
- Разберитесь с базовыми и расширенными темами Python
- Откройте для себя лучшие практики для написания кода Python профессионального уровня
- Создайте прочную основу в Selenium, REST API, Tkinter, модульное тестирование и асинхронное программирование
Подробно
С его растущей популярностью в последние несколько лет спрос на навыки Python на рынке труда стремительно растет.Обладая навыками Python, вы можете легко войти в некоторые из самых интересных отраслей, включая науку о данных, веб-приложения и домашнюю автоматизацию.
В этом курсе вы изучите Python, создавая впечатляющие приложения. Курс начинается с введения в Python, охватывающего основы и процесс установки. По мере продвижения вы узнаете все о внутренней работе Python и напишете код профессионального уровня для разработки приложений, следуя принципам Python и объектно-ориентированного программирования (ООП).После того, как вы освоите основы, вы углубитесь в продвинутые концепции Python, такие как обработка баз данных в Python, веб-разработка и веб-парсинг. Вы также будете взаимодействовать с API и изучать расширенные концепции ООП и разработку графического интерфейса с помощью Tkinter. Ближе к концу вы проведете модульное тестирование, узнаете об алгоритмах, структурах данных и библиотеках Python, а в конце расскажете об основных темах Python, которые помогут вам инкапсулировать полученные знания.
К концу этого курса вы овладеете навыками Python, необходимыми для создания надежных и мощных приложений.
Для кого предназначена эта книга
Если вы новичок в программировании и хотите начать с изучения одного из самых популярных языков в мире, или опытный программист, желающий начать свое путешествие по Python, этот курс для вас . Программисты Python, которые хотят освежить свои навыки и заняться продвинутыми темами, такими как алгоритмы и асинхронное программирование, также найдут этот курс полезным.
Показать и спрятать еще
Новая серия видео для начинающих по изучению программирования на Python
Вероятно, самое большое препятствие при изучении любого нового языка программирования — это просто знать, с чего начать.Что важно? Что мне нужно знать, чтобы стать профессионалом? Трудно следить за документами, когда вы даже не уверены, что читаете.
Вы могли взглянуть на Python. Может быть, вас привлекает его популярность. Может быть, вас привлекает его гибкость. С Python вы можете создавать решения любых форм и размеров. Вы можете покопаться в веб-разработке. Упростите свою жизнь с помощью автоматизации. Или, может быть, начать строить будущее с помощью машинного обучения.
Освоение нового языка — обычная ситуация для современных разработчиков.Дни, когда вся ваша карьера была сосредоточена на одном языке, давно прошли.
К счастью, концепции обычно не меняются при переходе от одного языка программирования к другому. Конечно, синтаксис может быть другим, но оператор if по-прежнему является оператором if , даже если он написан с использованием {} или End If . Итак, нам нужно изучать не , как программировать , а как программировать на новом языке .
Вот почему мы со Сьюзан создали эту серию видео! Возможно, вы знаете, как писать код, например, на JavaScript, Java или C # (или COBOL, или Bash, или… на самом деле это не имеет значения).Возможно, вы учились на курсах в колледже, в Интернете или читали книгу. Итак, вас не нужно учить, что такое оператор if, а скорее, как выглядит оператор if в Python.
Мы со Сьюзен вспомнили наши первые занятия с Python и то, что мы хотели бы, чтобы кто-нибудь сел и рассказал нам. Мы рассмотрели различные варианты быстрого старта, например, Face API, и спросили, что нужно знать кому-то, чтобы успешно пройти такое руководство. А потом построили курс.
Хотя мы не охватим в курсе все, что нужно знать о Python, мы хотим убедиться, что даем вам основы программирования на Python, начиная с обычного повседневного кода и сценариев. В конце курса вы сможете пойти и учиться самостоятельно, следуя документации, руководствам, книгам и т. Д. Мы обещаем, что будем делать все быстро и по делу, так что вы можете сразу погрузиться в области, которые вас больше всего интересуют (или которые смущают!).
Надеемся, вы к нам присоединитесь! И вы всегда можете найти меня и Сьюзан в Твиттере: @hockeygeekgirl и @geektrainer.
14 лучших каналов Youtube для изучения Python | Клэр Д. Коста
Если вы приняли решение и хотите изучить Python, у вас есть обширная коллекция ресурсов, которым можно следовать. Говоря конкретно о каналах Youtube, вы можете найти множество каналов с помощью простого поиска на YouTube. Если вы уже сделали это и были совершенно сбиты с толку результатами, не волнуйтесь, мы здесь, чтобы упростить вам поиск лучших каналов YouTube для изучения Python, чтобы вы могли сосредоточиться на обучающей части.Наши лучшие выборы перечислены ниже:
Источник: freeCodeCampfreeCodeCamp.org — это известный канал на YouTube, который пользуется большой популярностью среди программистов . Куинси Ларсон основал этот канал еще в 2014 году с целью упростить программирование и сделать его доступным для всех без какой-либо платы.
На данный момент freeCodeCamp является одним из лучших ресурсов для изучения не только Python, но и множества других языков программирования. Помимо учебников по Python для абсолютных новичков, freeCodeCamp также предлагает видеоуроки по Python для обработки задач , относящихся к доменам глубокого обучения и анализа данных.
Веб-сайт freeCodeCamp является домом для обширной коллекции ценных онлайн-руководств и практических ресурсов для широкого спектра языков программирования и областей, таких как JavaScript, Python, HTML, CSS, машинное обучение, анализ данных и т. Д. . Они также предлагают программы сертификации для ряда доменов, в том числе упомянутых выше, которые могут вас заинтересовать позже.
Источник: Программирование с помощью MoshКанал Моша Хамедани был активен на с 2014 года, и с тех пор приобрел большую популярность, что видно по количеству его подписчиков.
Ясный и лаконичный способ Моша излагать темы своим зрителям и делать это только с использованием передовых методов программирования — это главная изюминка канала. Большинство его обучающих видео обычно занимают более длинную сторону, в среднем от 40 минут до продолжительных 6 часов.
Начинающие Python могут найти 6-часовое универсальное обучающее видео Моша для начинающих «Все в одном» пугающим, но будьте уверены, его видео прекрасно структурированы с множеством временных меток, что делает навигацию безболезненной.
Мош также предлагает онлайн-курсы для других языков программирования, , таких как Node.js , Java, C #, SQL, TypeScript, Angular, и многие другие на своем веб-сайте. Если вам нравится его стиль преподавания и вы хотите изучить другой язык программирования, мы настоятельно рекомендуем вам ознакомиться с другими его курсами.
Источник: CS DojoКанал YouTube CS Dojo — это детище YK Sugishita , который был бывшим стажером Microsoft, бывшим сотрудником Google, а теперь ютубером .Посетив его канал, вы найдете плейлист под названием « Учебники по Python для абсолютных новичков », , где он максимально упростил начало программирования на Python.
YK следует принципу кодирования в своих видеороликах, где его зрители могут попрактиковаться в написании кода вместе с ним и даже поработать над практическими упражнениями.
Это еще и его стиль, в котором зрители понимают темы, что делает просмотр видео на его канале чрезвычайно простым.Это одна из основных причин растущей популярности его канала. Для всех, кому интересно, будьте уверены, YK также предоставляет подробное объяснение решений его упражнений по программированию.
На его канале также обсуждаются другие полезные темы, такие как структуры данных и алгоритмы, важные советы по программированию и ответы на часто задаваемые вопросы во время собеседований по кодированию.
Источник: SentdexОдин из лучших каналов в нашем списке, Харрисон Кинсли создал канал sentdex в 2012 году , и он в основном охватывает темы, связанные с Python .В видеороликах Харрисона вы заметите, что он использует практического подхода к темам, а не скучный теоретический подход. Хотя его канал на самом деле подходит для новичков, я рекомендую сделать небольшую домашнюю работу, чтобы получить общее общее представление о теме, прежде чем переходить к видео. Так вы сможете лучше понять обсуждаемую тему.
Его видео на Python подходят как для начинающих, так и для начинающих разработчиков. Помимо освещения различных тем, включенных в Python, Харрисон также рассмотрел несколько других технологий, таких как машинное обучение, анализ данных, робототехника, , Raspberry Pi и другие.
У Харрисона также есть веб-сайт, который я предлагаю вам посетить, где он более подробно рассказывает о каждом из своих видеороликов с объяснениями и сопутствующими примерами кода.
Источник: Кори ШаферКори Шафер начал свой канал на YouTube еще в 2006 году , где он охватывает ряд языков программирования и библиотек, но основное внимание уделяет Python.
Канал Кори набит удобными руководствами и пошаговыми руководствами для программистов всех уровней квалификации . Новички, начинающие с Python, найдут все, от инструкций по настройке среды разработки до руководств по различным вводным концепциям в Python.
Самое лучшее в видео на канале Кори — это когда вы хорошо разбираетесь в основополагающих концепциях Python, вы найдете множество руководств на его канале, где вы сможете проверить свои знания.
Другие языки программирования и фреймворки, руководства по которым вы найдете на его канале, включают JavaScript, SQL и Django . Вы также найдете руководства для некоторых полезных Data Science библиотек Python , , таких как Pandas для обработки чисел и Matplotlib для визуализаций , объяснения часто используемых терминов программирования и некоторые советы по развитию карьеры.
Источник: TeluskoЕсли вы ищете каналы, которые делают обучение максимально увлекательным и интересным, насколько это возможно, то этот канал может быть как раз для вас. Навин Редди создал канал Telusko в 2014 году , где он игриво и ясно освещает все темы, включенные в Python.
Я рекомендую этот канал для тех, кто делает первые шаги в мире программирования Python, и даже те, кто плохо знаком с программированием в целом, должны иметь возможность извлечь выгоду из этого канала.
Посмотрите немного глубже, и вы заметите, что Navin предлагает не только исчерпывающие списки воспроизведения видео, охватывающие Python , но и другие языки программирования и фреймворки.Длинный список языков программирования включает Kotlin , Django , JavaScript , Hibernate, Blockchain, Java , Spring Framework 5 , Angular 6 , плюс еще много полезных советов для программистов.
Источник: Real PythonReal Python также входит в число самых известных поставщиков учебных ресурсов для людей, заинтересованных в изучении Python.
Созданный Дэном Бадером в 2013 году, Real Python можно рассматривать как универсальный магазин для изучения тем, выходящих за рамки вводного. Я бы сказал, что лучшая аудитория для Real Python — это те люди, которые твердо разбираются в основополагающих темах Python и ищут свою следующую веху.
Их канал на YouTube охватывает все, от обучающих программ для начинающих, еженедельных подкастов и освещения событий Python .Вы также найдете важные советы по множеству тем, , например, как писать понятный и лучший код Python, как продвигать себя, шаги по построению лучшей карьеры, полезные советы по программированию и многое другое.
Источник: Умный программистИх серия подкастов последовательно освещает последние события в мире Python с обсуждениями с лучшими разработчиками Python со всего мира.
Канал Рафе Кази на YouTube «Умный программист » начал действовать в 2016 и стал популярным с каждым днем.Rafeh часто публикует видео и транслирует прямые трансляции проектов кодирования на своем канале, охватывающих множество тем и языков программирования, но его канал в основном вращается вокруг Python.
Не только Python, Rafeh также разместил обучающие видеоролики о работе с Django на своем канале , предоставляя необходимые учебные материалы для создания вашего первого веб-приложения.
Он также загрузил видеоролики, которые могут помочь вам ответить на несколько животрепещущих вопросов , которые могут возникнуть у вас, как у новичка, о , почему вам следует изучать программирование и что оно может для вас сделать.
Одним из важнейших аспектов, который отличает «Умного программиста» от других каналов YouTube, связанных с Python, в нашем списке, является акцент на улучшении навыков межличностного общения, которые часто теряются в процессе приобретения технических навыков. Замечу, что обилие рекламного контента на его канале может отвлекать.
Источник: SocraticaОснованная Кимберли Хэтч Харрисон и Майклом Харрисоном в 2011 году, Socratica — это , в первую очередь многопрофильный канал YouTube , на котором большинства видеороликов посвящены естествознанию и математике.
Socratica является домом для множества высококачественных видео по широкому кругу тем, разбросанных в разных областях, таких как уроки естествознания, уроки искусства, включая сонеты Шекспира, математические видео, охватывающие алгебру, математические вычисления, геометрию и многое другое.
Один из их многочисленных плейлистов видео охватывает темы, включенные в Python. Плейлист состоит из 33 видео и предлагает для начинающих подход к изучению Python с необходимыми вводными концепциями и последующим переходом к паре более сложных тем.
Помимо людей, заинтересованных в изучении Python, я также хотел бы порекомендовать этот канал студентам, поскольку он предлагает важные советы для выбора правильного пути карьеры. Если вам интересно узнать больше о Socratica, вам следует посетить их веб-сайт для получения дополнительной информации.
Источник: thenewbostonthenewboston , несомненно, является одним из крупнейших и самых популярных каналов YouTube , ориентированных на Python, в нашем списке благодаря огромному количеству видео и столь же впечатляющему количеству подписчиков.
Возвращаясь к теме, тогдашний канал YouTube Newboston был , основанный Баки Робертсом в 2008 году , и теперь он является домом для постоянно растущей коллекции полезных руководств и руководств для учащихся по длинному списку языков программирования.
Для начинающих, заинтересованных в изучении Python, мы хотели бы порекомендовать им сначала пройти через плейлист под названием « Python 3.4 Programming Tutorials » . Плейлист содержит подходящие вводные темы для начинающих и довольно прост.
Позже они могут перейти к созданию реальных проектов, таких как поисковый робот и сканеры веб-сайтов, упомянутые в канале. Помимо руководств по Python, некоторые из многих языков программирования, представленных на этом канале, включают PHP, Angular, React, , Node.js и Django.
Источник: Al SweigartAlbert Sweigart , также известный под именем Al Sweigart, ведет канал на YouTube, где преподает программирование как взрослых, так и детей.
Созданный в 2007 году канал Al на YouTube по-прежнему является одним из самых популярных каналов обучения Python для многих новых и опытных разработчиков. Большая часть его канала посвящена освещению тем, связанных с Python, в то время как остальная часть сосредоточена на Scratch, языке программирования, ориентированном на детей.
Один из его плейлистов под названием « Автоматизируйте скучную работу с помощью Python » предлагает более глубокое погружение в большую часть часто используемых вводных тем , таких как настройка Python, управление потоком, функции, списки и т. Д. . Плейлист вдохновлен его одноименной книгой.
Помимо аналогичного вводного материала, его книга также охватывает множество тем среднего уровня, таких как сопоставление с образцом, проверка ввода, чтение / запись файлов и ряд других широко используемых тем.
Источник: Крис ХоуксКак и большинство других каналов YouTube в нашем списке, канал Криса на YouTube также представляет собой смесь обучающих видео на нескольких языках программирования, а не только на Python.
С его первой загрузкой, датируемой и 2013 года, его канал YouTube в основном вращается вокруг руководств по Python , но вы также найдете другие языки программирования и фреймворки, такие как React, Node.js, Django, ASP.NET. Core и JavaScript ES6.
Мы рекомендуем новым разработчикам начать с плейлиста под названием « Python Beginner Tutorial » , который охватывает все, от основ до более сложных тем, хотя есть и несколько других плейлистов Python , например Python для Новички 2019 и изучают Python 3.5 .
После того, как вы закончите работу с упомянутым списком воспроизведения, вы можете либо проверить полученные знания, опробовав несколько проектов, доступных в Интернете, либо продолжить заполнение списка воспроизведения Learn Python 3.5. В любом случае, теперь вы должны быть готовы перейти к фреймворкам Python.
Источник: TokyoEdtechСозданный Кристианом Томпсоном , учителем средней школы в 2011 году, канал TokyoEdtech был , предоставляя новичкам одни из самых простых и всеобъемлющих руководств по проникновению в мир программирования.
В качестве основного языка программирования , который Кристиан использует на своем канале, является Python , поскольку он считает, что он предлагает правильное сочетание реальных приложений с чрезвычайно простой точкой входа, но есть и немного Java. Его канал в основном ориентирован на то, чтобы новички могли начать разработку простых приложений Python после того, как сначала выполнили вводный материал.
Как только они почувствуют себя комфортно, канал предлагает расширенные руководства по созданию простых 2D-игр с использованием Python с его популярными библиотеками для разработки игр.TokyoEdtech, разделенный на разные уровни квалификации, такие как начальный, средний и продвинутый, предлагает учащимся множество вариантов выбора своего следующего проекта, чтобы улучшить свои навыки в разработке приложений Python.
Лекции Ахмада по Python варьируются от подхода , ориентированного на модуль (например, numpy, sympy и т. Д.), Чтобы новички или опытные пользователи Python могли получить представление о разнообразных функциях данного модуля, до прикладной подход , демонстрирующий все замечательные возможности Python в нашей повседневной жизни.
С точки зрения приложения и для полного использования Python Ahmad показывает разные интересные вещи, которые вы можете делать с python . Эти приложения включают, помимо прочего, анализ фондового рынка, математическую выпуклую оптимизацию, операционные исследования, алгоритмическую торговлю, программирование сетевых сокетов, разговорный ИИ и многое другое.
Если вы студент колледжа или просто любопытный человек, которому интересно начать работу с Python, этот учебник может стать для вас эффективным выбором
Видеокурс: Python для журналистов
Курс Python для журналистов предназначен для журналистов, которые хотят узнать о наиболее распространенных применениях Python в журналистике данных.В рамках четырех модулей курса вы узнаете, как настроить Python и все связанные с ним инструменты на вашем собственном компьютере. Затем вы узнаете, как очистить беспорядочные наборы данных с помощью библиотеки Pandas. В третьем модуле вы узнаете, как анализировать данные, снова используя библиотеку Pandas. В четвертом и последнем модуле вы узнаете, как автоматически загружать данные из Интернета, используя библиотеки Beautiful Soup и Requests для работы с веб-браузером.
Этот курс Python для журналистов предназначен для тех, кто пробовал себя в Python, но почему-то не проявил настойчивость; и для тех, кому не терпится окунуться в голову… Хотя никаких знаний в области программирования не требуется, полезно знать, что такое терминал или командная строка, и если вы знакомы с Excel.
Для всех модулей, кроме модуля 1 «Настройка», есть блокнот Jupyter, который можно использовать во время курса. Каждая тетрадь содержит упражнения и пояснения. Рядом с этими записными книжками вы найдете шпаргалки с использованными командами Python для модулей 2, 3 и 4. Удачного изучения Python!
1 установка
Этот модуль основан на установке правильных инструментов на вашем ноутбуке.Чтобы следовать в следующих модулях, вам понадобится Python 3 и несколько библиотек Python, таких как Requests, Pandas и BeautifulSoup. Блокноты Jupyter очень рекомендуются. Рекомендуется установить все это программное обеспечение за один раз, используя дистрибутив Anaconda. Этот первый модуль не включает Jupyter Notebook.
На вашем компьютере:
Установите дистрибутив Anaconda, чтобы одновременно установить на свой компьютер Python 3, библиотеки Requests, Pandas, BeautifulSoup и Jupyter Notebooks.Примечание: выберите установку Anaconda, которая включает Python 3, на момент написания это был бы Python 3.6. Дополнительная подготовка: если вы хотите убедиться, что у вас есть прочная основа, на которой можно строить, вы можете сначала узнать о синтаксисе Python. Вот несколько мест, где вы можете узнать о различных типах данных в Python, которые могут помочь, прежде чем продолжить этот курс: (Поскольку следующие учебники частично совпадают, настоятельно рекомендуется выбрать один).
Онлайн-руководства для начинающих на LearnPython.орг Цифровая книга Python для вас и меня
2 Чистые данные
В этом втором модуле мы покажем вам, как войти в среду Conda Python; как запустить Jupyter Notebook. Как только это будет решено, вы узнаете, как импортировать CSV-файл в свой Jupyter Notebook, чтобы подготовиться к некоторой очистке данных. Среди прочего вы узнаете, как искать и заменять значения внутри столбца; как изменить тип данных столбца; и как извлечь данные из столбца для заполнения нового столбца.Этот модуль включает как блокнот Jupyter (пустой и заполненный), так и шпаргалку — все они называются «чистые данные».
3 Анализировать данные
В этом третьем модуле вы узнаете, как анализировать данные с помощью библиотеки Pandas. Вы узнаете, как исследовать свой набор данных, просматривая сводную статистику — количество, медианное значение, среднее значение, процентили, стандартное отклонение и т. Д. — для каждого столбца. Далее мы рассмотрим, как сортировать, фильтровать, суммировать и подсчитывать значения в столбцах. Наконец, вы узнаете, как группировать данные, создавая (для тех, кто знаком с Excel) сводные таблицы, используя библиотеку Pandas.Этот модуль включает как блокнот Jupyter (пустой и заполненный), так и шпаргалку — все они называются «анализировать данные».
4 Очистить данные
Последний модуль вращается вокруг сбора данных с использованием библиотек Requests и BeautifulSoup. Хотя на практике вы, скорее всего, сначала захотите очистить данные, а затем очистить и проанализировать эти числа, этот модуль является последним для учебных целей. Модули очистки и анализа данных познакомили вас с блокнотами Python, Pandas и Jupyter.Прокладывая путь для базового поиска в Интернете, включая цикл for для максимально эффективного сбора данных. Завершив этот модуль, вы сможете написать несколько базовых веб-браузеров для сбора данных из Интернета. Этот модуль включает в себя блокнот Jupyter (пустой и заполненный) и шпаргалку — все они называются «очистка данных».
Лекция 9: Классы Python и наследование | Видео лекций | Введение в информатику и программирование на Python | Электротехника и информатика
Следующий контент предоставляется по лицензии Creative Commons.Ваша поддержка поможет MIT OpenCourseWare продолжать предлагать высококачественные образовательные ресурсы бесплатно. Чтобы сделать пожертвование или просмотреть дополнительные материалы сотен курсов MIT, посетите MIT OpenCourseWare на ocw.mit.edu.
АНА БЕЛЛ: Хорошо, все, давайте начнем. Итак, сегодня будет вторая лекция по объектно-ориентированному программированию. Итак, краткий обзор прошлого раза — в понедельник мы видели — нас познакомили с этой идеей объектно-ориентированного программирования, и мы увидели такие вещи, которые называются абстрактными типами данных.И эти абстрактные типы данных мы реализовали через классы Python. И они позволили нам создавать наши собственные типы данных, которые абстрагировались от общего объекта по нашему выбору, верно?
Итак, мы, например, раньше использовали списки. Но с абстрактными типами данных мы могли создавать объекты наших собственных типов. Мы видели координатный пример. А затем, в конце урока, мы увидели пример дроби.
Итак, сегодня мы поговорим немного больше об объектно-ориентированном программировании и классах.Мы собираемся увидеть еще несколько примеров. И мы поговорим о некоторых других нюансах классов, поговорим о скрытии информации и переменных класса. А во второй половине лекции мы поговорим об идее наследования. Итак, мы собираемся использовать объектно-ориентированное программирование для моделирования того, как устроена реальная жизнь. Итак, в реальной жизни у вас есть наследство. И в объектно-ориентированном программировании это тоже можно смоделировать.
Хорошо, поэтому первые несколько слайдов будут небольшим резюме, чтобы убедиться, что все на одной странице, прежде чем я представлю пару новых концепций, связанных с классами.Итак, вспомните, когда … на прошлой лекции мы говорили о написании кода с двух разных точек зрения, верно? Первый был от кого-то, кто хотел реализовать класс. Таким образом, реализация класса означала определение вашего собственного типа объекта.
Итак, вы определили тип объекта при определении класса. А затем вы решили, какие атрибуты данных вы хотите определить в своем объекте. Итак, какие данные составляют объект? Что это за объект, хорошо?
Помимо атрибутов данных, мы также видели такие вещи, которые называются методами.А методы были способами рассказать кому-нибудь, как использовать ваш тип данных. Итак, как можно взаимодействовать с типом данных, хорошо? Это с точки зрения того, кто хочет написать свой собственный тип объекта. Итак, вы реализуете класс.
И другая перспектива заключалась в том, чтобы писать код с точки зрения того, кто хотел использовать уже написанный класс, хорошо? Итак, это включало создание экземпляров объектов. Итак, вы используете объектный тип. Создав экземпляры объектов, вы можете выполнять с ними операции.Итак, вы смогли увидеть, какие методы добавил тот, кто реализовал этот класс. А затем вы можете использовать эти методы для выполнения операций с вашими экземплярами.
Итак, просто посмотрев на пример координат, который мы видели в прошлый раз, немного подробнее о том, что это означает — у нас было определение класса для типа объекта, которое включало определение имени класса. И имя класса в основном сообщало Python, какой это тип объекта, хорошо? В этом случае мы решили, что хотим назвать координату — мы хотели создать объект Coordinate.И поэтому тип этого объекта должен был быть координатой.
Мы определили класс в общем виде, хорошо? Итак, нам нужен был способ доступа к атрибутам данных любого экземпляра. Итак, мы используем эту собственную переменную, хорошо? И переменная self, которую мы использовали для ссылки на любой экземпляр — на атрибуты данных любого экземпляра в общем виде, не имея в виду конкретный экземпляр, хорошо?
Итак, всякий раз, когда мы обращаемся к атрибутам данных, мы говорим что-то вроде self dot, чтобы получить доступ к атрибуту данных.Вы получите доступ к атрибуту напрямую с помощью self.x. Или, если вы хотите получить доступ к методу, вы бы сказали себя, точка, а затем имя метода — например, расстояние.
И действительно, суть определения класса заключается в том, что ваш класс определяет все данные, то есть атрибуты данных, и все методы, которые будут общими для всех экземпляров. Итак, любой экземпляр, который вы создаете для определенного типа объекта, будет иметь точно такую же структуру, хорошо? Разница в том, что значения каждого экземпляра будут разными.
Итак, когда вы создаете экземпляры классов, вы можете создать более одного экземпляра одного и того же класса. Таким образом, мы можем создать здесь объект Coordinate, используя этот синтаксис прямо здесь. Итак, вы говорите тип, а затем любые значения, которые он принимает. И вы можете создать более одного объекта Coordinate.
Каждый объект Coordinate будет иметь разные атрибуты данных. Извините, у него будут разные значения атрибутов данных, хорошо? Каждый объект Coordinate будет иметь значение x и значение y.Но значения x и y в разных экземплярах будут отличаться, хорошо? В этом разница между определением класса и просмотром конкретного экземпляра класса. Таким образом, экземпляры имеют структуру класса. Итак, для координаты все экземпляры имеют значение x и значение y. Но фактические значения будут отличаться в разных экземплярах.
Хорошо, в конце концов, почему мы хотим использовать объектно-ориентированное программирование? Итак, пока что примеры, которые мы видели, были числовыми, верно — координата, дробь.Но с помощью объектно-ориентированного программирования вы можете создавать объекты, имитирующие реальную жизнь. Итак, если бы я хотел создать объекты из … объекта, определяющего кошку, и объекта, определяющего кролика, я мог бы сделать это с помощью объектно-ориентированного программирования. Мне, как программисту, просто нужно решить, какие данные и какие методы я хочу назначить этим группам объектов, хорошо?
Итак, при объектно-ориентированном программировании каждый из них считается отдельным объектом. И в качестве другого объекта я могу решить, что у кошки будет имя, возраст и, возможно, цвет.И эти трое здесь, справа, каждый из этих кроликов тоже является объектом. И я собираюсь решить, что буду изображать кролика только по возрасту и цвету, хорошо? А с объектно-ориентированным программированием, используя эти атрибуты, я могу сгруппировать эти три объекта вместе и эти три объекта вместе, хорошо?
Итак, я группирую вместе наборы объектов, которые будут иметь одинаковые атрибуты. А атрибуты — это тоже резюме прошлого раза — бывают двух видов: атрибуты данных и процедурные атрибуты.Таким образом, атрибуты данных — это в основном то, что определяет объект. Так как же изобразить кошку как объект? И вам, как программисту, решать, как вы хотите это сделать.
Для координаты это было довольно просто. У вас были значения x и y. Если мы представляем что-то более абстрактное, например животное, то, может быть, я бы сказал: ну, я собираюсь изобразить животное по возрасту и имени, хорошо? Так что действительно вам решать, как вы хотите представлять — с какими атрибутами данных вы хотите представлять свой объект.
Процедурные атрибуты также назывались методами. И методы, по сути, спрашивают, что может сделать ваш объект, хорошо? Итак, как тот, кто хочет использовать ваш объект — как кто-то может с ним взаимодействовать? Итак, для координаты мы увидели, что вы можете найти расстояние между двумя координатами. Может быть, для нашего абстрактного объекта Animal вы могли бы заставить его издавать звук, хорошо, возможно, распечатав его на экране или что-то в этом роде.
Хорошо, на этом слайде также показано, как создать класс, чтобы убедиться, что все находятся на одной странице, прежде чем мы продолжим.Итак, мы определили класс, используя это ключевое слово class. И мы сказали, класс, имя класса. Итак, теперь мы собираемся создать более абстрактный класс Animal. Во второй половине лекции мы увидим, что значит заключить что-то еще в круглые скобки. Но пока мы говорим, что животное — это объект в Python. Это означает, что он будет иметь все свойства, которые есть у любого другого объекта в Python.
И пока мы создаем это животное, мы собираемся определить, как создать экземпляр этого класса.Итак, мы говорим def. И этот __init__ был специальным методом, который сообщил Python, как создать объект. Помните, что в круглых скобках у нас есть self — переменная, которую мы используем для ссылки на любой экземпляр класса, ОК? Мы не имеем в виду конкретный экземпляр, мы просто хотим иметь возможность ссылаться на любой экземпляр, хорошо? Итак, мы используем эту собственную переменную.
И второй параметр здесь будет представлять, какие еще данные мы используем для инициализации нашего объекта. В этом случае я собираюсь инициализировать объект Animal с возрастом, хорошо? Поэтому, когда я создаю животное, мне нужно указать ему возраст.
Внутри __init__ находятся любые инициализации, которые я хочу выполнить. Итак, во-первых, я собираюсь назначить переменную экземпляра age — это будет возраст атрибута данных — как то, что передается. И затем я также делаю еще одно присваивание здесь, где я изначально присваиваю имя атрибута данных None.
Позже в коде, когда я хочу создать объект Animal, я говорю имя класса. А затем я передаю его по любым параметрам — в данном случае возрасту.И я назначаю его этому экземпляру здесь, хорошо?
Хорошо, теперь у нас есть класс Animal. Мы сделали первую часть здесь, это инициализация класса, верно? Итак, мы рассказали Python, как создать объект этого типа. Здесь есть несколько других методов, которые я реализовал. Следующие два мы вызываем геттеры, а два после этого — сеттеры, хорошо? При реализации класса очень часто используются геттеры и сеттеры. Итак, геттеры, по сути, возвращают значения любого из атрибутов данных, хорошо?
Итак, если вы посмотрите внимательно, get_age () просто возвращает self.age, а get_name () просто возвращает self.name. Так что это очень простые методы. Точно так же set_age () и set_name () — мы увидим, что делает этот забавный знак равенства, на следующей паре слайдов. Но сеттеры делают очень похожую вещь, когда они собираются установить атрибуты данных на все, что было передано, хорошо?
Итак, это геттеры и сеттеры. И последнее, что здесь находится, — это метод __str__. И этот метод __str__ используется, чтобы сообщить Python, как печатать объект этого типа Animal.Итак, если у вас не было этого метода __str__, если вы помните из последней лекции, в конечном итоге вы получите какое-то сообщение при печати своего объекта, в котором говорится, что это объект типа Animal в этой ячейке памяти , что очень малоинформативно, правда? Итак, вы реализуете здесь этот метод, который сообщает Python, как печатать объект этого типа, хорошо?
Итак, главное на этом слайде состоит в том, что вы должны использовать геттеры и сеттеры — вы должны реализовывать геттеры и сеттеры для своих классов.И мы увидим на следующих нескольких слайдах, почему именно. Но в основном они собираются предотвратить появление ошибок в дальнейшем, если кто-то решит изменить реализацию.
Итак, мы увидели, как … Итак, предыдущий слайд, этот слайд здесь, показывает реализацию класса Animal. И здесь мы можем увидеть, как мы можем создать экземпляр этого объекта. Таким образом, мы можем сказать a = Animal (3). Итак, это создаст новый объект Animal с возрастом 3. И мы можем получить доступ к объекту через переменную a.
Точечная нотация, напомним, это способ получить доступ к атрибутам данных и методам класса, хорошо? Таким образом, вы можете позже указать возраст в своей программе, и это разрешено. Он попытается получить доступ к атрибуту данных о возрасте этого конкретного экземпляра класса, a. Так что это даст вам 3.
Однако на самом деле не рекомендуется напрямую обращаться к атрибутам данных. Это причина — вы увидите на следующем слайде причину — почему мы собираемся использовать геттеры и сеттеры.Вместо этого вы должны использовать метод get_age () для получения возраста животного. Так что это также вернется, 3. Итак, они будут делать то же самое.
И причина, по которой вы захотите использовать геттеры и сеттеры, — это идея сокрытия информации, хорошо? Итак, вся причина, по которой мы используем классы в объектно-ориентированном программировании, заключается в том, чтобы вы могли абстрагировать определенные данные от пользователя, хорошо? Вы должны абстрагироваться от этих атрибутов данных. Таким образом, пользователям действительно не нужно знать, как реализован класс.Они просто должны знать, как пользоваться классом, хорошо?
Итак, рассмотрим следующий случай. Допустим, тот, кто написал класс Animal, хочет изменить реализацию. И они решили, что больше не хотят называть атрибут данных «возрастом», они хотят называть его «годами», хорошо? Поэтому, когда они инициализируют животное, они говорят self.years = age. Таким образом, животное по-прежнему инициализируется своим возрастом. И возраст передается в атрибут данных с именем «years», хорошо?
Поскольку я реализую этот класс, я хочу иметь геттер, который будет возвращать self.годы. Поэтому я больше не возвращаю self.age, потому что возраст больше не является атрибутом данных, который я использую. Итак, с этой новой реализацией, если бы кто-то использовал эту реализацию и напрямую обращался к возрасту, как — напрямую обращался к возрасту атрибута данных — с этой новой реализацией, он действительно получил бы ошибку, верно? Потому что это животное, которое они создали с помощью моей старой реализации, больше не имеет атрибута с именем «возраст». Итак, Python выдаст ошибку, говоря, что атрибут не найден, или что-то в этом роде, хорошо?
Если бы они использовали геттер a.get_age () — человек, который реализовал класс, повторно реализовал get_age () для правильной работы, верно, с их новым атрибутом данных, годами, а не возрастом — поэтому, если бы я использовал getter get_age (), я бы не стал не столкнулись с ошибкой, хорошо? Итак, что нужно помнить — напишите геттеры и сеттеры для ваших классов. А позже в коде используйте геттеры и сеттеры, чтобы предотвратить ошибки и упростить сопровождение кода.
Хорошо, так что скрытие информации — это здорово. Но, сказав это, Python на самом деле не очень хорош в сокрытии информации, хорошо? Python позволяет делать определенные вещи, которых никогда не следует делать.OK. Итак, первое, что мы только что видели. Первый — получить доступ к атрибутам данных извне класса, хорошо? Итак, если бы я сказал a.age, Python позволяет мне делать это без использования геттеров и сеттеров.
Python также позволяет записывать в атрибуты данных извне класса. Итак, если бы я реализовал класс Animal, предполагая, что возраст был числом, целым числом, и все мои методы работают, пока age является целым числом, но кто-то решил проявить смекалку и за пределами класса установить возраст как бесконечный, как строка, которая может вызвать сбой кода, хорошо? Python позволяет вам это делать.Но теперь вы нарушаете тот факт, что возраст должен быть целым числом, верно? Итак, теперь методы, вероятно, должны постоянно проверять тот факт, что age является целым числом.
Еще вам разрешено создавать атрибуты данных вне определения класса, хорошо? Поэтому, если я хотел создать новый атрибут данных под названием «размер» для этого конкретного экземпляра, Python также позволяет мне это сделать. И я могу установить все, что захочу, хорошо? Итак, Python позволяет вам делать все эти вещи, но на самом деле это не лучший стиль для их выполнения.Так что просто не делай этого. Все в порядке.
Итак, последнее, о чем я хочу упомянуть — последнее, что касается классов, прежде чем мы перейдем к наследованию — это идея, называемая аргументами по умолчанию. И аргументы по умолчанию передаются в методы. А поскольку методы являются функциями, вы также можете передавать функциям различные аргументы.
Так, например, у этого метода set_name () был self. И тогда это новое имя равно этой пустой строке здесь, хорошо? Мы такого раньше не видели. Но это называется аргументом по умолчанию.И вы можете использовать эту функцию одним из двух способов.
Первый способ — создать новый экземпляр объекта типа Animal с этой строкой здесь, a = Animal (3). И тогда мы можем сказать a.set_name (). Таким образом, это вызывает метод установки для установки имени. И обратите внимание, мы всегда говорили, что вы должны указывать параметры для всего, кроме себя, хорошо? Но здесь у нас нет параметров.
Но это нормально, потому что newname действительно имеет аргумент по умолчанию, хорошо? Таким образом, Python сообщает Python, что если для этого конкретного формального параметра не передан параметр, то по умолчанию следует использовать все, что здесь указано.Итак, если я не передал параметр a.get_na — a.set_name (), извините — a.sett_name () будет устанавливать имя в пустую строку, потому что это параметр по умолчанию. Итак, в следующей строке, когда я печатаю a.get_name (), это просто напечатает пустую строку, хорошо?
Если вы хотите передать параметр, вы можете сделать это как обычно. Таким образом, вы можете сказать a = Animal (3), a.set_name (), а затем передать здесь параметр. А затем новое имя будет присвоено любому параметру, переданному таким образом.Все, что вы передаете, отменяет аргумент по умолчанию, и все хорошо. Итак, когда я печатаю a.get_name (), он распечатывает имя, которое вы передали. Вопросы по умолчанию? Ага.
АУДИТОРИЯ: [НЕДОСТАТОЧНО]
АНА БЕЛЛ: Что, если вы не укажете значение по умолчанию для —
АУДИТОРИЯ: Для нового имени?
АНА БЕЛЛ: Для нового имени? Если вы не укажете аргумент по умолчанию для newname и сделаете этот случай здесь, то это приведет к ошибке. Итак, Python скажет что-то вроде: ожидал один аргумент, получил ноль или что-то в этом роде.Отличный вопрос. OK.
Хорошо, давайте перейдем к идее иерархий, хорошо? Итак, самое замечательное в объектно-ориентированном программировании — это то, что оно позволяет нам добавлять уровни абстракции в наш код, хорошо? Поэтому нам не нужно знать, как реализованы очень, очень низкоуровневые вещи, чтобы их использовать. И мы можем создавать наш код все более и более сложным по мере использования этих различных абстракций.
Итак, рассматривайте каждую из этих вещей на этом слайде как отдельный объект, хорошо? Все эти штуки можно считать животными, хорошо? Согласно нашей реализации животного, единственное, что у животного есть — это возраст, хорошо? И это, наверное, правда, правда? У каждой из этих вещей есть возраст.
Но теперь я хочу развить это и создать отдельные группы, верно? И каждая из этих отдельных групп, которые я создаю поверх Animal, будет иметь свои собственные функции, верно? Они будут немного более конкретными, немного более специализированными.
Итак, теперь я могу создать эти три группы: кошка, кролик и группа людей. И, например, они все животные, верно? У всех есть возраст. Но, например, может быть, у человека будет список друзей, а у кошки и кролика — нет.Может быть, у кошки есть атрибут данных для количества жизней, которые у них остались, справа, а у человека и кролика их нет, хорошо?
Итак, вы можете подумать о добавлении этих более специализированных — добавлении функциональности в каждую из этих подгрупп, хорошо? Так что они будут становиться все более и более специализированными, но все они сохранят тот факт, что они животные. Так, например, у всех есть возраст. Итак, поверх всего этого мы можем добавить еще один слой и сказать, что ученик — это человек и животное, хорошо? Но помимо возраста и, возможно, также наличия списка друзей, у ученика также может быть специальность или — они симпатичные, может быть, — их любимый предмет в школе.
Итак, это общая идея иерархий, хорошо? Итак, мы можем абстрагироваться от предыдущего слайда к этому и сказать, что у нас есть родительские классы и дочерние классы, хорошо? Класс Animal похож на наш родительский класс. Это высший класс.
Унаследовав от класса Animal, у нас есть дочерние классы или подклассы, хорошо? Все, что может сделать животное, может сделать и человек. Все, что может сделать животное, может и кошка. И все, что может сделать животное, может сделать кролик, хорошо, то есть иметь возраст и, может быть, некоторые действительно базовые функции, хорошо? Но между человеком, кошкой и кроликом они будут сильно различаться в том, что они могут делать, верно? Но все они могут делать то же, что и Animal.
Итак, дочерние классы наследуют все атрибуты данных и все методы или поведения, которые есть у их родительских классов, хорошо? Но дочерние классы могут добавить больше информации. Например, у человека может быть список друзей, а у обычного животного — нет.
Он может добавить больше поведения. Например, кошка может лазить по деревьям, а люди и кролики — нет. Или вы также можете переопределить поведение. Итак, в предыдущем у нас было животное, человек, студент. Так что, может быть, животное вообще не говорит, но человек может говорить.Так что это добавленная функциональность человеку.
А может человек может только поздороваться. Но затем, когда мы разговариваем со студентом, мы можем отвергнуть этот факт — переопределить метод speak () человека и сказать, что студент может сказать, знаете ли, у меня домашнее задание, или мне нужно поспать, или что-то в этом роде. , OK? Итак, у нас есть один и тот же метод speak () как для человека, так и для ученика, потому что они оба могут говорить. Но студент отвергнет тот факт, что они поздоровались с чем-то другим.
Хорошо, давайте взглянем на код, чтобы представить это в перспективе.Итак, у нас есть класс Animal, который мы видели раньше. Это родительский класс, хорошо? Он наследуется от объекта, что означает, что все, что базовый объект может делать в Python, может делать животное, например, привязка переменных, ну знаете, очень низкоуровневые вещи, хорошо? Мы видели __init__. Мы видели два метода получения, сеттеры и строковый метод для печати объекта типа Animal.
Хорошо, теперь давайте создадим подкласс Animal. Назовем это Котом, хорошо? Мы создаем класс с именем Cat.В скобках вместо «объект» мы теперь помещаем «животное». И это говорит Python, что родительский класс Cat — Animal. Итак, все, что может сделать животное, может сделать и кошка. Это включает в себя все атрибуты, такие как возраст и имя, и все методы. Итак, все геттеры, сеттеры, __str__, __init__, все, что было у животного, теперь есть у кошки — есть у класса Cat.
Однако в класс Cat мы добавим еще два метода. Во-первых, говорите (). Таким образом, speak () будет методом, который просто будет принимать себя, хорошо — никаких других параметров.И все, что он делает, это выводит на экран «мяу» — очень просто, хорошо? Таким образом, с помощью метода speak () мы добавили в класс новые функции. Итак, животное не может говорить, тогда как кошка говорит «мяу».
Кроме того, с помощью этого метода __str__ здесь мы переопределяем животное __str__, хорошо? Итак, если мы вернемся к предыдущему слайду, мы увидим, что у __str__ животного есть животное, плюс имя, плюс возраст здесь, тогда как __str__ кота теперь говорит «кошка», имя и возраст, хорошо? Так что я решил реализовать это именно так, хорошо? Итак, здесь я переопределил метод __str__ класса Animal.
Обратите внимание, что у этого класса нет __init__, и это нормально. Потому что Python на самом деле скажет: ну, если в этом конкретном методе нет __init__ — извините, в этом конкретном классе — тогда посмотрите на моих родителей и скажите, есть ли у моих родителей __init__, хорошо? И если да, используйте этот __init__. Так что это действительно так для любых других методов. Итак, идея здесь в том, что когда у вас есть иерархии, у вас есть родительский класс, у вас есть дочерний класс, у вас может быть дочерний класс для этого дочернего класса и так далее, и так далее.Таким образом, у вас может быть несколько уровней наследования.
Что происходит, когда вы создаете объект типа что-то, что было — типа, который является дочерним классом дочернего класса дочернего класса, верно? Что происходит, когда вы вызываете метод для этого объекта? Ну, Python собирается сказать, существует ли метод с таким именем в моем текущем определении класса? И если так, используйте это.
А если нет, то посмотри на моих родителей. Мои родители знают, как это сделать, верно? Есть ли у моих родителей метод того, чем я хочу заниматься? Если да, используйте это.Если нет, посмотрите на их родителей и так далее, и так далее. Таким образом, вы как бы прослеживаете свою родословную, чтобы выяснить, можете ли вы использовать этот метод или нет.
Итак, давайте рассмотрим немного более сложный пример. У нас есть класс с именем Person. Он унаследуется от Animal. Внутри этого человека я собираюсь создать свой собственный — я собираюсь создать метод __init__. И метод __init__ будет делать что-то иное, чем метод __init__ животного. Как обычно, он примет себя.И он будет принимать два параметра вместо одного: имя и возраст.
Первым делом метод __init__ вызывает метод животного __init__. Зачем я это делаю? Что ж, теоретически я мог бы инициализировать имя и атрибуты данных о возрасте, которые Animal инициализирует в этом методе. Но я использую тот факт, что я уже написал код, который инициализирует эти два атрибута данных. Так почему бы просто не использовать это, хорошо?
Итак, здесь говорится, что я собираюсь назвать класс Animal.Я собираюсь вызвать его метод __init__. И я собираюсь оставить это на ваше усмотрение — не на вас как класс, но я говорю, когда программы работают — я собираюсь предоставить вам решать, как инициализировать животное. с этим конкретным возрастом и как его назвать. Итак, Python говорит: да, я знаю, как это сделать, поэтому я сделаю это за вас. Итак, теперь говорится, что человек — это животное. И я инициализировал для вас возраст и имя.
Следующее, что я делаю в __init__, я собираюсь установить имя для любого имени, которое было передано, хорошо? Обратите внимание, что в __init__ я могу делать все, что хочу, включая вызов методов.И последнее, что я здесь делаю, это создам новый атрибут данных для Person, который представляет собой список друзей, хорошо? Итак, у животного не было списка друзей, но у человека он будет.
Следующие четыре метода — это геттер, поэтому он вернет список друзей. Это добавит друга в конец моего списка. Хочу отметить, что на самом деле я не писал метод удаления друзей. Итак, когда у вас появляется друг, они друзья на всю жизнь. Но это нормально.
Следующий метод — это speak (), который выводит на экран «привет». И последний метод здесь — получить разницу в возрасте между двумя людьми. Это просто вычитает их возраст и говорит, что это пятилетняя разница в возрасте или что-то еще. И здесь у меня есть метод __str__, который я переопределил из Animal, который вместо «animal: name» будет говорить «person: name: age», ОК?
Итак, мы можем запустить этот код. Так что это здесь. У меня здесь есть человек-животное.Итак, я собираюсь запустить этот код. И что я сделал? Я создал нового человека. Я дал ему имя и возраст. Я создал другого человека, имя и возраст. И здесь я только что запустил на нем несколько методов: get_name (), get_age (), get_name () и get_age () для каждого из двух человек. Итак, напечатано, Джеку — 30, Джилл — 25.
Если я напечатаю p1, будет использоваться метод __str__ объекта Person. Итак, нужно напечатать «person:», его имя, а затем их возраст. p1.speak () просто говорит «привет». И тогда разница в возрасте между p1 и p2 всего 5.Это просто вычитание, а затем вывод на экран.
Хорошо, это мой человек. Добавим еще один класс. Этот класс будет студентом, и он будет подклассом Person. Поскольку это подкласс класса Person, он будет … учащийся унаследует все атрибуты человека и, следовательно, все атрибуты животного.
Метод __init__ ученика будет немного отличаться от метода Person. Мы дадим ему имя, возраст и специальность.Обратите внимание, что здесь используются аргументы по умолчанию. Так что, если я создам студента, не давая ему специальности, изначально будет установлено значение «Нет».
Еще раз, эта строка здесь, Person .__ init __ (self, name, age), сообщает Python, эй, вы уже знаете, как инициализировать для меня человека с этим именем и этим возрастом. Так ты можешь просто сделать это? И Python говорит: да, я могу сделать это за вас. И это, может быть, сэкономит вам пять строк кода, просто вызвав метод __init__, который вы уже написали через Person, хорошо?
Итак, Студент был инициализирован как человек.И, кроме того, мы собираемся установить еще один атрибут данных, чтобы студент был основным. И мы собираемся установить майор как None. Учащийся получит здесь этот сеттер, этот метод сеттера, который изменит основное значение на все, что они захотят, если они захотят это изменить. А затем я собираюсь переопределить метод speak ().
Так говорите метод для человека, вспомните, только что поздоровался. Студент будет немного сложнее. Я собираюсь использовать тот факт, что кто-то создал этот случайный класс, хорошо? Так что именно здесь мы можем написать более интересный код, повторно используя код, написанный другими людьми.Итак, кто-то написал случайный класс, который может делать классные вещи со случайными числами.
Итак, если я хочу использовать случайные числа в своем коде, я собираюсь поместить этот «случайный импорт» в начало своего кода, который, по сути, включает все методы из класса Random, одним из которых является этот метод random (). Итак, random () — это метод random () из класса Random. И это, по сути, дает мне число от 0 до 1, включая 0, но не включая 1, хорошо?
Итак, это случайное число, которое я здесь получаю, поможет мне написать мой метод для speak (), где оно будет — с вероятностью 25% оно либо скажет: «У меня есть домашнее задание», «Мне нужно поспать, «Я должен поесть» или «Я смотрю телевизор», хорошо? Итак, студент скажет одну из этих четырех вещей.И последнее, что я здесь делаю, это перезапись метода __str__.
Итак, давайте посмотрим на код. Я собираюсь прокомментировать эту часть, раскомментировать студента и посмотреть, что у нас получится. Итак, я создаю ученика. Я создаю одного студента, его специальность — CS, имя — Алиса, и возраст — 20. s2 будет другим студентом — имя — Бет, возраст — 18 лет. И основным будет None, потому что я здесь не прошел ни по одной специальности. Так что по умолчанию, используя аргумент по умолчанию, будет None.
Если я напечатаю s1, s2, то эти две вещи будут распечатаны с помощью любого метода __str__. А потом я заставлю студентов выступить. И если я запустил его несколько раз, вы увидите, что каждый раз он будет печатать разные вещи. Итак, «Мне нужно поспать», «У меня есть домашнее задание», «Мне нужно поспать», «У меня есть домашнее задание», да. Так что каждый раз он будет печатать что-то новое. Хорошо, вопросы о наследовании в этом примере? OK.
Последнее, о чем мы собираемся поговорить в этом классе, это идея — или в этой лекции идея — переменной класса, хорошо? Чтобы проиллюстрировать это, я собираюсь создать еще один подкласс своего животного, называемого кроликом.Итак, переменные класса — пока что мы видели — извините, позвольте мне вернуться. До сих пор мы видели переменные экземпляра, верно? Такие вещи, как self.name, self.age, все это переменные экземпляра. Значит, это специфические переменные — они общие для всех экземпляров класса, верно? У каждого экземпляра класса есть эта конкретная переменная. Но значение переменной будет различным для всех разных экземпляров.
Итак, переменные класса будут переменными, значения которых используются всеми экземплярами класса.Таким образом, если один экземпляр класса изменяет эту переменную класса, то любой другой экземпляр класса увидит измененное значение. Так что это как бы поделено между всеми разными экземплярами. Итак, мы собираемся использовать переменные класса, чтобы отслеживать кроликов.
Итак, мы создаем этот класс, Rabbit. tag = 1. Ничего подобного мы раньше не видели. Итак, тег — это переменная нашего класса. Переменные класса обычно определяются внутри определения класса, но за пределами __init__. Итак, тег будет переменной класса, и я инициализирую его значением 1.
Внутри __init__ это говорит нам, как создать объект Rabbit. Так что я собираюсь дать себе, как обычно, возраст, а затем двух родителей. Не беспокойся пока о двух родителях. Внутри __init __— извините, внутри __init __— я собираюсь вызвать __init__ животного, чтобы сделать меньше работы. Python уже знает, как инициализировать животное за меня, так что давайте сделаем это. Итак, мы установим два атрибута данных, имя и возраст.
Я собираюсь установить атрибуты данных для parent1, parent2 для кролика в соответствии с переданными значениями.А затем здесь я собираюсь использовать эту переменную класса. Итак, я создаю эту переменную экземпляра атрибута данных, относящуюся к конкретному экземпляру с именем rid, ОК? И я назначаю эту переменную экземпляра переменной класса. И я обращаюсь к переменным класса, используя не себя, а имя класса — в данном случае rabbit.tag.
Итак, изначально тег будет равен 1. А затем __init__ будет увеличивать тег здесь на 1, хорошо? Это означает, что с этого момента, если я создам какие-либо другие экземпляры, другие экземпляры будут получать доступ к обновленному значению тега вместо 1.
Итак, давайте сделаем небольшой рисунок, чтобы показать вам, что я имею в виду. Допустим, у меня есть Rabbit.tag, хорошо? Итак, изначально тег будет 1, хорошо? А затем я собираюсь создать новый объект Rabbit. Итак, я набираю код, ладно? Итак, предположим, что это объект кролика — о, мальчик, хорошо — r1.
Знаете, я на самом деле гуглил, как нарисовать кролика, но это совсем не помогло. Итак, r1 будет новым кроликом, которого мы создадим. Сначала происходит следующее: когда я впервые создаю этого нового кролика, он получит доступ к переменной класса, текущее значение которой равно 1.Итак, когда я создаю идентификатор кролика — идентификатор кролика, r1.rid — он получит значение 1. И, согласно коду, после того, как я установил идентификатор кролика на любой тег, я собираюсь увеличивать тег. Итак, это будет означать: «Хорошо, теперь, когда я это сказал, я собираюсь вернуться сюда и увеличить значение тега до 2. ОК».
Допустим, я создаю еще один объект Rabbit, хорошо? Ладно, вот … это грустный кролик, r2. Идентификатор r2 будет каким? Что ж, в зависимости от того, как мы создаем новый объект Rabbit, он будет иметь доступ к любому значению тега, который является переменной класса.Он был изменен предыдущим созданием моего кролика, так что теперь я собираюсь получить к нему доступ, верно? Таким образом, значение будет 2.
И, согласно коду, следующее, что я делаю после создания экземпляра rid, — это увеличиваю тег. Итак, я увеличиваю переменную класса до 3, хорошо? Итак, обратите внимание, что все мои экземпляры обращаются к этому общему ресурсу, этой разделяемой переменной, называемой тегом.
Итак, поскольку я создаю все больше и больше кроликов, все они будут увеличивать значение тега, потому что оно является общим для всех экземпляров.Итак, это значение, эта переменная класса тегов, отслеживает, сколько различных экземпляров кролика — сколько разных экземпляров кроликов я создал на протяжении всей моей программы, хорошо? Таким образом, основная идея заключается в том, что переменные класса являются общими для всех экземпляров. Так что все они могут их модифицировать. Но эти райды, верно, эти переменные экземпляра, предназначены только для этого конкретного экземпляра. Таким образом, r2 не может иметь доступа к значению идентификатора r1 и не может его изменить. Но это не изменит его во всех разных случаях, хорошо?
Так вот как работает метод __init__ в Rabbit, хорошо? Итак, у нас есть эти теги, которые отслеживают, сколько кроликов мы создали.У нас есть пара геттеров — у нас есть несколько геттеров, чтобы получить всех родителей. Итак, теперь давайте добавим несколько более интересную функцию. О, я просто хочу упомянуть, что когда я избавляюсь, я на самом деле использую здесь эту классную функцию zfill () или метод, который фактически дополняет начало любого числа любым количеством нулей, чтобы добраться до этого номер здесь. Таким образом, число 1 становится 001 и так далее. Так что это гарантирует, что у меня есть этот красивый тип идентификатора, который всегда состоит из трех цифр.
Итак, попробуем поработать с этим объектом Rabbit.Давайте определим, что происходит, когда вы складываете двух кроликов вместе, хорошо — в этом классе, а не в реальном мире. OK. Итак, если я хочу использовать оператор плюса между двумя экземплярами кроликов, я должен реализовать этот метод __add__, хорошо? Итак, все, что я здесь делаю, это возвращаю новый объект Rabbit, хорошо? Упс, извините за это.
А давайте вспомним метод кролика __init__, хорошо? Поэтому, когда я возвращаю новый объект Rabbit, я возвращаю новый объект Rabbit, возраст которого будет равен 0. Self — поэтому объект Rabbit, для которого я вызываю этот метод, будет родительским для новый кролик.А другой будет вторым родителем нового кролика, хорошо?
Итак, если мы посмотрим на код, и я запустил его, в этой части я создаю трех кроликов, r1, r2 и r3. Обратите внимание, что эта переменная класса работает, как ожидалось, потому что идентификаторы каждого из моих кроликов увеличиваются по мере того, как я создаю новых кроликов. Итак, у нас есть 001, 002, 003. Если я напечатаю r1, и r2, и r3 — это были эти три строки здесь — родители r1 и r2 равны None, потому что это просто значение по умолчанию — да, по умолчанию аргументы в пользу создания кролика.
Чтобы сложить двух кроликов, я использую оператор «плюс» между двумя объектами Rabbit. Справа я тестирую кроличью добавку. И я могу распечатать идентификаторы всех моих кроликов. И обратите внимание, что когда я создал этого нового кролика, r4, его идентификатор все еще увеличивался. Итак, теперь ID четвертого кролика — 004. И затем, когда я получаю родителей r4, они такие, какими мы хотим их видеть, поэтому r1 и r2.
Еще я хочу сравнить двух кроликов. Поэтому, если я хочу сравнить двух кроликов, я хочу убедиться, что их родители одинаковые.Таким образом, я могу сравнить первого родителя первого кролика с первым родителем второго кролика и второго родителя первого кролика со вторым родителем второго кролика или получить комбинации этих двух. Вот что делают эти два логических значения.
Итак, они скажут мне — это будут логические значения, True или False. И я собираюсь вернуться, либо у них одни и те же родители того же типа, либо одни и те же родители перекрещиваются, хорошо? Итак, обратите внимание, что я на самом деле сравниваю идентификаторы кроликов напрямую с объектами Rabbit, хорошо? Итак, если бы я сравнивал здесь непосредственно самих родителей, вместо того, чтобы сравнивать идентификаторы, то в конечном итоге происходила бы эта функция, этот метод eq () вызывался бы снова и снова.Потому что здесь у нас есть родители кролики.
И в какой-то момент родители самых, самых первых кроликов, когда-либо созданных с помощью этой программы, перестали существовать. И поэтому, когда я пытаюсь вызвать — когда я пытаюсь вызвать родительский атрибут None, это приведет к ошибке, хорошо, что-то вроде ошибки атрибута, когда у None нет этого родительского атрибута, ОК? Вот почему я сравниваю здесь идентификаторы, хорошо? И код в лекции здесь показывает вам несколько тестов на то, есть ли у кроликов одни и те же родители. И здесь я создал новых кроликов, r3 и r4, добавление этих двух.И у r5 и r6 здесь будут одни и те же родители … Верно, но у r4 и r6 их нет, хорошо?
Итак, чтобы подвести итог, объектно-ориентированное программирование — это идея создания ваших собственных коллекций данных, в которых вы можете систематизировать информацию очень согласованным образом. Итак, каждый отдельный тип объекта, который вы создаете, этого конкретного типа, который вы создаете — извините, каждый экземпляр объекта определенного типа будет иметь одни и те же атрибуты данных и одни и те же методы, хорошо? Это действительно возвращает нас к идее декомпозиции и абстракции в программировании.Хорошо, спасибо всем.
Учебник по Python для начинающих. DVD Программирование на Python для начинающих. Изучение Python стало проще. Не усердно изучайте Python. Получите этот легкий ускоренный курс Python
Освойте изучение Python, даже если вы никогда не использовали его до сегодняшнего дня
Изучение Python не должно быть трудным. В этом курсе Python для начинающих вы узнаете, как легко программировать Python. Следите за нашими плечами, когда мы проведем вас через этот видеоурок по Python.Не читай … Смотри.
Посмотрите эти учебные пособия по Python и быстро изучите Python 3
Просто представьте… к этому времени на следующей неделе вы сможете полностью выучить Python
Вот что вы узнаете из Python Для начинающих
— Все, от новичка до более продвинутого Python Учебник
— Как использовать Python Shell
— Уметь создавать электронные таблицы с нуля
— Обработка данных формы из Python
— Преобразование переменных из одного типа в другой с использованием встроенных функций Python
— Использование операторов сравнения для определения логических результатов
— Понимание математических операторов, используемых в Python
— Как использовать интерактивный режим в Python
— Использование операторов If, else и else if для применения ветвления
— Доступ и редактирование значений в словарях
— И намного больше
Это тренировка на питоне, которую вы так долго искали.В руководстве по Python для начинающих мы предполагаем, что у вас нулевой опыт. Вы узнаете все, что вам нужно, чтобы быстро набрать скорость. А поскольку наш инструктор является сертифицированным экспертом по Python, вы можете быть уверены, что обучение — это именно то, что вам нужно для правильного изучения Python.
Кроме того, мы даем вам 100% гарантию возврата денег. Ваш выбор — ничего не делать и изо всех сил пытаться изучать Python самостоятельно, совершая множество ошибок. Или вы можете просто нажать кнопку «Добавить в корзину» и воспользоваться нашей огромной ограниченной по времени скидкой и начать осваивать Python для начинающих.
Так чего же вы ждете? Вам нечего терять
.