Пожалуй начнём. Эти уроки самый высший уровень понимания для новичка, который может быть в Питон в начале пути вообще, так как я направляю, а вы всё делаете на личном опыте и помогая друг другу. Это приводит к глубокому пониманию и практическому использования пайтон для любых целей, так как все библиотеки написаны в стиле ООП и конечно же, что не написано в библиотеке, легко допишите. На это и направлен этот курс. Освоение Пайтон именно понимание в центре.
Это рубрика группы, где мы будем углубляться в пайтон ООП.
Создан раздел специально для того, что бы зафиксиролвать важные вещи
https://spb-tut.ru/python-oop-docs/
Сама практика ООП и обусуждение будет проходить в этой специально созданно рубрике группы
https://spb-tut.ru/info/group/?place=msg%2Fspb-tut%2FTAUbgF321NY%2FnD7g2QbECAAJ
Надеюсь Сергей Осадчий продолжит свои исследования в мире пайтон ООП. И очень рассчитываю, что большинство ребят, будут делать не в тихоря а открыто. Ребята, я работаю с вами, как по индивидуальному плану. Ну нравится вам терять возможности делайте в тихоря. Но все же лучше будет, если больше людей будет делать в группе, не нужно стесняться, в первую очередь вы себя лишаете огромных возможностей.
Очень надеюсь, что присоединяться и другие ребята энтузиасты, которые хотят глубоко изучить пайтон ООП.
Пожалуй начнём. Эти уроки самый высший уровень понимания для новичка, который может быть в Питон в начале пути вообще, так как я направляю, а вы всё делаете на личном опыте и помогая друг другу. Это приводит к глубокому пониманию и практическому использования пайтон для любых целей, так как все библиотеки написаны в стиле ООП и конечно же, что не написано в библиотеке, легко допишите. На это и направлен этот курс. Освоение Пайтон именно понимание в центре.
Обращаю внимание этот курс дополнительный в школе.
И вы прочитаете историю. Как так получился этот курс. Замечу, что в школе уроки добавляются постоянно и уже более 14 суток. Я знаю, уже знаю точно так как с 2017 года начало приходить много сообщений. Как школа помогла многим поменять профессию и изменить жизнь, не поленитесь почитайте вечерок, много нового узнаете, да и статьи писал осознано, многие вопросы станут правильно в голове или вообще отпадут.
********************
Сначала немного истории.
До определенного момента я просто писал уроки, с 2017 года начало приходить много отзывов, что школа многим помогла.
почитайте, кто только начал здесь
https://spb-tut.ru/reviews/
В принципе какая ставилась цель школы?
Что бы человек не бросил язык. Школа направлена в первую очередь на людей, которые не заканчивали технических вузов, но постоянно у них в голове, была мечта, начать программировать.
Моя цель и была помочь людям начать этот путь.
Самое сложное начать, когда понятен основной смысл любой человек уже может двигаться сам.
Вот и добрались до главной идеи школы, помочь участнику начать самостоятельное движение в Питон.
Задача выполняется успешно.
Например прочтите
https://spb-tut.ru/info/history/?page=255
Шли годы и однажды я себе задал вопрос, а что я делаю, когда пишу приложения? - и ответил пишу функции и классы. (запомните пока это)
Но до этого я все 8 лет спрашивал себя, как улучшить обучение?
да уроки подробны, да просты, да понятны.
Но все же оставался некий зазор именно в месте, где должен и был быть толчок вглубь пайтон и часть участников определенное время буксовало. Кому-то начинал пониматься Пайтон, когда начинал осваивать Джанго, кому-то когда работал с библиотеками типа Tkinter.
Все приходили к программированию, повторяю все, кто хотел.
Но вот пришло время, когда наконец-то я задал вопрос себе не о приложении, а о рынке. Я боялся этого вопроса, а скорее всего ответа на этот вопрос. Потому что понимание что многое упустил. оно страшит.
И когда, ,я задал вопрос себе, именно со стороны рынка, то есть Веб рынок и Мобильный рынок, то ответ о языках напросился сам собой, имея опыт программирования, я начал подбирать языки уже не под приложения, а под рынок. И понял, что связка Питон, Котлин даёт возможность полностью перекрыть мобильный и веб рынок.
И здесь я понял, что было большой ошибкой писать только на одном языке.
После начала изучения двух языков, как разряды молнии начали пониматься глубокие слои обеих языков. Рассмотрение самого языка стало плодотворным и понятным до глубины до микронов.
Выше я писал, что задавал себе вопрос:
"Шли годы и однажды я себе задал вопрос, а что я делаю. когда пишу приложения, и ответил пишу функции и классы. "
Вот наконец-то дошло. Обучение в Kotlin и начал с функций и далее давать язык в пределах функций, потом зацепили классы, в классах функции всего лишь меняют название на метод (функция так называется в классе, для понимания программистами что это ООП). Конечно читать одно, а когда будете проходить по шагам совсем другое у вас добавляется счтастье от постижения нового от того что у вас получается.
Этот метод был подхвачен участниками, а домашние задания расширяли тему, что вело к пониманию и каждый участник вкладывал (и вкладывает) своё зание для других, при этом получая тотальное понимание и опыт. Свой личный опты это и есть критерий истины.
К этому времени появился человек Сергей Осадчий, вот его сообщение в группу:
https://spb-tut.ru/index_all/?page=375
Который начал через пол года писать на двух языках. Мне стало понятно одно, если Сергей продолжит, то может выйти на любой, подчеркиваю на любой профессиональный уровень.
И так спонтанно начался курс. Зная, что и где хромает у новичка я давал задания вот отсюда начать:
https://spb-tut.ru/python-oop-docs/before_oop/start/
Обратите внимание на видео и там описано как начать и ссылка на группу.
Когда вы зайдете в группу, то там идите по сообщениям подряд, и делайте задания, задания реальные.
Каков их принцип, заданий имеется в виду?
Например я понимал, что у новичков проблема с функциями и задавал вопросы Сергею, создания функций, конструкции функций, когда функции используют функции, но все это было с реальных библиотек и фреймворков, то есть, то что используется на самом деле. Моя задача была не просто подсказать, что реально нужно в практике но и вырастить код из Сергея. Я использовал немного не привычное выражение "вырастить код из Сергея".
Причина. Когда Россияне показывали огромные центры микробиологии, то один учёный сказал: «Мы приблизились к природе, так как природа всё выращивает (привёл пример дерева)» и добавил и мы начали выращивать..
Так вот поэтому этот мой метод и является верным. Так как весь код написанный Сергеем был написан им самим. А теперь вопрос. Так всего то прошло пол года. А он начал писать на двух языках. Почему?
Я точно знаю, Сергей наверное тоже со временем переосмыслит и поймёт. Точный ответ дал А. Ситушкин в группе. Он написал, что когда знаешь язык появляется осведомленность о языке, то есть ты понимаешь что там уже есть.
Значит вопрос решенный. Первая часть сообщений, если вы посмотрите направлена на то, что бы Сергей понимал, что он уже владеет ООП.
Сомневаетесь?
Посмотрите вдохновляющие уроки и я вам докажу, что ООП, точнее мышление в стиле ООП вы используете каждый день с детства:
https://spb-tut.ru/guest/pages/299/
Значит дело сделано.
Моя задача была убедить Сергея, что язык программирования создан не для того, что бы усложнить жизнь людям, а что бы упростить жизнь людей. То есть язык программирования — это есть продолжение нас самих. И мы его знаем давно с дества, узнать только нужно технические малости.
Да, единственное что человеку нужно показать, как это делать технически.
Но ведь это просто.
Если пройти уроки на pro365.net а там дети 6-ти лет понимают.
И дойдя до функций уже можно начать заниматься по этим дополнительным урокам.
Я создал специальный документ в формате markdown, что бы можно было зафиксировать важные моменты, читать здесь:
https://spb-tut.ru/python-oop-docs/before_oop/start/
Результат не заставил себя долго ждать, посмотрите первый код Сергея и через несколько месяцев.
Да, да, да. Этот код писал человек, который пол года назад не мог ubuntu устаногвить, как описывает это Сергей:
Цитата начало:»5 - месяцев назад я и Ubuntu установить не мог.
Для меня это было как собр ать какой-нибудь космический аппарат.
…………………………...»
https://spb-tut.ru/index_all/?page=375
Сначала пример вот первый код Сергея:
dom = ["Кирпич", "Лопата", "Песок", "Цемент", 547, {33:"eee"}] dom1 = (5, 89, 74, 583, 20.3) dom2 = {2:"str", "a":1} def podschet (a): # Функцыя принимает один параметр(a). try: # Попробовать. su = 0 # Переменная со значением 0 для подсчета. for x in a: # Обойти a и сложить в x. su = su + x # Произвести подсчет х. print("Общая сумма =",su) # Вывести сумму. print(type(a)) # Вывести тип а. except: # Если не получется. print("Это не числа.") # Вывести текст. print(type(a)) # Вывести тип. Тип вывожу что бы знать это кортеж, словарь. и.тд. # Если в функцию попадают данные типа int, происходит подсчет всех элементов и вывод суммы и типа, # если попадают другие данные, функция выводит текст и тип. #/////////////////////////////////////////////////// podschet(dom1)
А вот через пару месяцев:
class Zoo: # Класс. """ Написать класс Зоопарк. 1.Пять зверей. 2.В зоопарке работает автоматика и если нужно почистить вальер автоматически открываются клетки. 3.Распорядок чистки клеток. 4.Клетки открывает администратор. 5.Администратор открывает после того как к нему приходит смотритель за животными. """ animal = [] # Добавление животных и поиск. voliar = [] # Добавление животных и поиск по ключу. access = ("administrator",) # Кортеж - доступ к чистке клеток. В поле введите должность: нужно ввести administrator. class Animals (Zoo): # Подкласс класса Zoo(). """ Звери. """ def add (self): # Метод. """ Добавление животных. """ print("Список животных.") self.add_animal = str(input("Добавте животного: ")) # Переменной присвоить значение ввода с клавиатуры. self.animal.append(self.add_animal) # В список animal добавить ввод с клавиатуры. print("Животное -",self.add_animal, " добавленно") # Вевести ввод с клавиатуры и текст. print("Животные: ", Zoo.animal) # Вывести список класса Zoo() class Voliary (Zoo): # Подкласс класса Zoo(). """ Вальер. """ def voliary (self): # Метод. """ Добавление животных в клетки. """ print("Добавление в вальер.") self.kwargs1 = input("Введите имя животного: ") # Переменной self.kwargs1 присвоить значение ввода с клавиатуры. self.kwargs2 = input("Введите номер клетки: ") # Переменной self.kwargs2 присвоить значение ввода с клавиатуры. self.add_dictionary = {self.kwargs1:self.kwargs2} # Переменной self.add_dictionary присвоить значение словаря с элементами ввода с клавиатуры. Zoo.voliar.append(self.add_dictionary) # В список voliar добавить новый словарь. print("Животное", self.kwargs1, "добавленно в клетку №", self.kwargs2) # Вывести ввод с клавиатуры и текст. print(Zoo.voliar) # Вывести список с словарями. def Search_List (self): # Метод. """ Поиск животных. """ selff = input("Поиск - введите имя животного: ") # Переменной присвоить значение ввода с клавиатуры. for i in Zoo.animal: # Обойти список animal в классе Zoo и сложить в i. if selff in i: # Если введенное с клавиатуры есть в i то : print("Найденно совпадение ", selff) # Вывести текст и переменную selff. break # Выйти из цикла. else: # Иначе: print("Такого животного в Зоопарке нет.") # Вывести текст. def Search_Key (self): # Метод. """ Поиск по ключу. """ selff = input("Поиск вальера - введите имя животного: ") # Переменной присвоить значение ввода с клавиатуры. for x in Zoo.voliar: # Обойти список voliar в классе Zoo и сложить в x. if selff in x: # Если ввод с клавиатуры есть в x. print("Найденно совпадение ", Zoo.voliar[selff.index(selff)], "вальер.") # Вывести текст и список voliar по срезу ввода с клавиатуры. break # Выйти из цикла. else: # Иначе: print("Такого животного в Зоопарке нет.") # Вывести текст. class Staff (Zoo): # Подкласс класса Zoo(). """ Персонал. """ def People (self): # Метод. """ Добавление персонала. """ selff = input("Введите вашу должность: ") # Переменной присвоить значение ввода с клавиатуры. for ac in Zoo.access: # Обойти кортеж access и сложить в ac. if selff == ac: # Если ввод с клавиатуры равен ac. print(bool(Zoo.access), "Доступ разрешен.") # Вывести булевое значение и текст. self1 = str(input("Введите имя животного у которого нужно убрать: ")) # Переменной присвоить значение ввода с клавиатуры. for ac2 in Zoo.voliar: # Обойти список voliar и сложить в ac2. if self1 in ac2: # Если ввод с клавиатуры есть в списке voliar то: print("Уборка вальера -", ac2[self1]) # Вывести ac2 по срезу ввода с кл.self1 break # Выйти из цикла. else: # Иначе: Не проводить уборку клеток. print("Доступ закрыт!!!") # Вывести текст. # Основная часть: aligator = Animals() # Экземпляр класса . aligator.add() # Обращение к методу. aligator = Voliary() # Экземпляр класса. aligator.voliary() # Обращение к методу. aligator.Search_List() # Обращение к методу. aligator.Search_Key() # Обращение к методу. aligator = Staff() # Экземпляр класса. aligator.People() # Обращение к методу.
Итог.
То есть я придумал задание про зоопарк и Сергей писал, писал осмысленно, а, по ходу я направлял его мысли на важные вещи. Например, я часто вижу, что люди после многих лет использования пайтон пишут код, который Сергей написал через пару месяцев. Но при этом он понимает что делает.
Теперь вы поняли почему важно именно выращивать код из человека (то есть каждый из себя выращивает код основанный на понимании), потому что каждый из нас давно использует объектно-ориентированное программирование и нам достаточно просто понять, как это делать технически, но технически получается понять тогда, когда мы понимаем что делаем.
А ведь я сам не мог полтора года войти в язык в 2009 году, не понимал, как свои мысли заменить языком, в школе это возможно.
И главное, когда вы делаете сами, но я как преподаватель вас просто направляю, что бы вы изучали именно то что нужно в практике и когда вижу что где-то буксуете, то даю дополнительные задания, потом по коду вижу. Что , ….ага понял, …..теперь можно двигаться дальше.
Так вот вам и ответ. Я могу точно сказать, что Сергей и другие ребята, кто делал программисты, то есть они реально пишут код с пониманием.
Рассмотрим факт ближе. Кто пишет код? Верно? Сергей? Сам он пишет код? Да, сам! То есть Сергей программирует?
Да программирует? То есть Сергей сам пишет код, то есть Сергей программирует, значит Сергей программист.
Верно ребята, Сергей программист. От кого теперь зависит будущее, верно от Сергея(Сергей взят, так как это реальный человек. Если поставит себе задачу очень простую ни дня без строчки кода, то его код будет сложнее и сложнее, круче и круче.
Но ведь многие кто читают эту статью мечтают о том.
Начать программировать?
Я и писал эту длинную статью, что бы вы поняли, что всё в ваших руках. Надеюсь поняли. В школе есть люди, которые готовы общаться и помогать друг другу.
Да, да ребята, другого пути нет, берите и пишите.
Но мне очень интересен тот факт. Я знаю. Что много людей делают код по примеру Сергея.
Но мне странно, а почему бы не обсуждать, чего боимся ребята. Вас что в угол поставят, побьют или двойку поставят. Не стесняйтесь пишите. Не нужно бояться выкладывать свой код, путь он очень кривой. Сегодня кривой, а завтра крутой. Дело практики и времени.
Я попытался рассказать в статье с чего начать новичку.
Понимаю на сайты заходишь и много инфы, давайте перечислим пункты:
1. Получить доступ к школе если нет (он пожизненный)
https://spb-tut.ru/info/action/
2. Начать с этой страницы, там рекомендации:
https://spb-tut.ru/python-oop-docs/before_oop/start/
3. после как выполнили рекомендации: идти далее
https://spb-tut.ru/python-oop-docs/oop/index_oop/
и далее далее.
4. Мы здесь не затронули ещё огромный пласт, это уроки Джаго, уроки Kotlin и много много чего другого ведь в школе уже более 14 суток видео уроков.
Ведь сейчас мы говорили именно о начале, что бы, как программист стать на ноги именно в короткие сроки. Об этом маленьком промежутке времени, когда вы начали изучать язык и вроде бы делаете уроки и понимаете, но потом уже не понимаете, именно устранить этот пробел. Что бы ваше первичное понимание сразу переходило в настоящее программирование, а дальше перед вами открывается целый мир, понимая функцию (рабочая лошадка любого языка) и понимая классы, вы будете изучать Джанго, библиотеки машинного обучения, да что угодно любые вещи, но вы уже не будетье смотреть тупо на библиотеку, а библиотека для вас будет выступать инструментом, вы сможете писать на ней, ведь зная принципы ООП, бери да подставляй, что она там делает, но ведь будете писать уже по принципам, которые понимаете, ваш код будет богаче и развитие будет в геометрической прогрессии. Вот как важен правильный старт, а это и есть правильный старт.
Но все же немного скажу о двух яхыках, а потом перейдём к заданиям.
Если вы будете изучать и пайтон и Котлин:
1. вы уясните метод и будете практиком, чистым практиком.
2. Последнее время я много внимания уделяю изучению двух языков и много уже сказал об этом. Но все же главное наверное вот что. Изучение двух языков открывает путь к истинному пониманию языка программирования, как способа свободного владения. Это невозможно сделать при изучении одного языка, так как мы всегда видим только пол картины, но когда начинаем изучать два противоположных языка в данном случае Пайтон и Котлин, то перед нами открывается вся глубина языка программирования как такового.
3. Мы вынуждены сравнивать и чётко видим отличия, вы вынуждены именно вынуждены узнавать всё о функциях, что они разные (функция здесь для примера, частый случай, рабочая лошадка, в жизни всё шире).
4. Наконец-то через очень короткое время мы начинаем понимать рабочую лошадку языка функцию, и до нас доходит, что на самом деле что бы например выучить другой язык. То нет смысла в учебниках, а нам достаточно почитать, а что есть типы в языке, а что есть функции в языке. И как пример, если мы прочитали например в JS функции первого уровня, то нам уже и понятно, как писать.
5. Если бы мы изучали один язык, как делают многие и это была моя ошибка, ну функция и функция, ну класс и класс, но ведь никогда не придет настоящего понимания, так как нам не нужно будет понимать глубокие вещи, так как нет в них нужды при изучении одного языка, эта самая нужда появляется именно при изучении хотя бы двух языков.
6. И здесь мы замечаем. Что больше нет страха, нет преграды, мы начинаем понимать главное, что все языки программирования похожи и если мы отдадим время двум и изучим досконально, при том досконально разбираясь в понятиях языка, которые присущи всем язкам — это и есть путь к профессионализму. Добавить больше мне нечего.
Перейдем к нашей теме Питон ООП. Будет в следующем сообщении.
Я попытался рассказать в статье с чего начать новичку.
Понимаю на сайты заходишь и много инфы, давайте перечислим пункты:
1. Получить доступ к школе если нет (он пожизненный)
https://spb-tut.ru/info/action/
2. Начать с этой страницы, там рекомендации:
https://spb-tut.ru/python-oop-docs/before_oop/start/
3. после как выполнили рекомендации: идти далее
https://spb-tut.ru/python-oop-docs/oop/index_oop/
и далее далее.
4. Мы здесь не затронули ещё огромный пласт, это уроки Джаго, уроки Kotlin и много много чего другого ведь в школе уже более 14 суток видео уроков.
Ведь сейчас мы говорили именно о начале, что бы, как программист стать на ноги именно в короткие сроки. Об этом маленьком промежутке времени, когда вы начали изучать язык и вроде бы делаете уроки и понимаете, но потом уже не понимаете, именно устранить этот пробел. Что бы ваше первичное понимание сразу переходило в настоящее программирование, а дальше перед вами открывается целый мир, понимая функцию (рабочая лошадка любого языка) и понимая классы, вы будете изучать Джанго, библиотеки машинного обучения, да что угодно любые вещи, но вы уже не будетье смотреть тупо на библиотеку, а библиотека для вас будет выступать инструментом, вы сможете писать на ней, ведь зная принципы ООП, бери да подставляй, что она там делает, но ведь будете писать уже по принципам, которые понимаете, ваш код будет богаче и развитие будет в геометрической прогрессии. Вот как важен правильный старт, а это и есть правильный старт.
Но все же немного скажу о двух яхыках, а потом перейдём к заданиям.
Если вы будете изучать и пайтон и Котлин:
1. вы уясните метод и будете практиком, чистым практиком.
2. Последнее время я много внимания уделяю изучению двух языков и много уже сказал об этом. Но все же главное наверное вот что. Изучение двух языков открывает путь к истинному пониманию языка программирования, как способа свободного владения. Это невозможно сделать при изучении одного языка, так как мы всегда видим только пол картины, но когда начинаем изучать два противоположных языка в данном случае Пайтон и Котлин, то перед нами открывается вся глубина языка программирования как такового.
3. Мы вынуждены сравнивать и чётко видим отличия, вы вынуждены именно вынуждены узнавать всё о функциях, что они разные (функция здесь для примера, частый случай, рабочая лошадка, в жизни всё шире).
4. Наконец-то через очень короткое время мы начинаем понимать рабочую лошадку языка функцию, и до нас доходит, что на самом деле что бы например выучить другой язык. То нет смысла в учебниках, а нам достаточно почитать, а что есть типы в языке, а что есть функции в языке. И как пример, если мы прочитали например в JS функции первого уровня, то нам уже и понятно, как писать.
5. Если бы мы изучали один язык, как делают многие и это была моя ошибка, ну функция и функция, ну класс и класс, но ведь никогда не придет настоящего понимания, так как нам не нужно будет понимать глубокие вещи, так как нет в них нужды при изучении одного языка, эта самая нужда появляется именно при изучении хотя бы двух языков.
6. И здесь мы замечаем. Что больше нет страха, нет преграды, мы начинаем понимать главное, что все языки программирования похожи и если мы отдадим время двум и изучим досконально, при том досконально разбираясь в понятиях языка, которые присущи всем язкам — это и есть путь к профессионализму. Добавить больше мне нечего.
Перейдем к нашей теме Питон ООП. Будет в следующем сообщении.