Специальная, подарочная акция получения доступа к Django4!
Как, я, начал код писать в Python? Смотрите, если уперлись и ничего не получается.
-
Курс рекомендуется делать основательно на каждый раздел брать неделю.
Курс делается в виде направляющих вопросов, основные моменты, где это необходимо будет записано видео или код или пояснение.
Так как основная задача курса глубокое изучения ООП с результатом чтения и умения писать профессиональный код
Рекомендуется посмотреть вот эти уроки в бесплатном доступе:
Пишите такой крутой код Python и будете крутым программистом. Цели. Так как в школе изучаем ООП по моему методу, давайте посмотрим на ООП к которому стоит стремится и как метод изучения ООП в контексте смысла и без смысла(просто делая нечто). Задачи наши. Увидим крутой код Python к которому нужно стремится.
При изучении ООП питон мы будем углубляться и погружаться глубоко насколько это можно.
В Пайтон классы имеют полностью независимую структуру.
За основу взяты функции, для того, что бы свести работу функций и классов в одно целое и сходятся они в параметрах и исключениях.
В остальном нужно чётко понимать разницу между методом и функцией, классы имеют своё пространство имён, а например экземпляры своё и вот здесь начинается первая путаница, что первое возвратит питон и в таком стиле будем изучать.
Важно научится видеть разницу, иногда она очень маленькая, но кардинально влияет на результат.
Поэтому начнём с формулировок. которые должны будут выражаться в коде, что бы в начале добиться чёткого единого понимания это раз, понимания этих понятий при чтении(причём однозначного) и построим работу на том из чего ноги растут, ссылки на объект и создание экземпляра и дальше пойдём в этом ключе.
Основным на первом этапе, как Вы поняли будет добиться однозначного понимания тех действий, которые делаются в коде. ( то есть пишутся и понимаются однозначно, так как именно в этом весь подвох)
Например, class и экземпляр, вроде одно и то же но по крайне мере логически:
Это понимание должно быть ясно выражено в коде и пониматься так и только так, то есть добиться того, что бы при взгляде был однозначный ответ это ссылка на объект, или это объект или это объект-экземпляр и т.д.
Пример:
class MyClass: """A simple example class""" i = 12345
def f(self): return 'hello world'
x = MyClass()
# x.f()точно эквивалентно MyClass.f(x)
MyClass.f(x) # вот он self в работе
# В данном случае self передал наш экземпляр, потому что ранее мы так его назвали x = MyClass() # так не нужно писать, но это важно понимать.
'hello world'x.f()'hello world'# далее нужна ясность, которая и есть ясность сразу и чёткий контроль,#что мы это видим в коде. Видим и отдаём себе отчёт. что видим и при этом при проверке получаем ожидаемый результа или ожидаемое исключение.
# все атрибуты класса, функциональные объекты (не функции)# определяют методы экземпляров.x.f # что это? Это ссылка на объект.Myclass.f # что это? Это функция, реализовано выше.НО это только пример,но не функция, а только для понимания, поэтому и было сказано функциональный объект, то есть по типу функции, но не функция и то только для понимания, но называться далее будет методом или правильно объект-метод
x.f не то же самое, что Myclass.f - это объект метода (функцию брали для примера) и так
x.f это метод-ссылка
Myclass.f - объект метода.
А это что?
x.f() ???????????????????????
Вопросов больше чем достаточно.
А теперь задаём себе вопрос, когда мы просматриваем код, мы чётко понимаем что перед нами и отталкиваемся именно от этого?то-то. Есть что изучать и зачем изучать.Только будем учится не догадками. а кодом проверять. Основное требование при работе с классами, твёрдое понимание функций и работы параметров функций и исключений и уверенное применение.Нам нужно сосредоточится на отличиях, иногда очень незначительных, но возвращающих иные результаты.Если же функции не изучены, то классы точно не будут поняты правильно.Думаю это основная проблема.На большинстве курсов пробежали функции, а потом пришли в классы. Не удивительно, что ничего далее не получается, кроме путаницы.И на этапе работы с классами ставим уже на место работу с типами данных. Основное требование уверенное знание до этого итераторов на высоком уровне и вообще без них нечего куда-то двигаться.Так что ребята все получится соображайте и исправляйте недочёты. все точно получится.
Сообщение 2:
Конечно возникнут вопросы, а что делать тому, кто например не знает функции.
Лучше следовать рекомендациям, я не отслеживаю, как и что кто делает. Дело личное.
Но все же, если хотим рассчитывать на результат.
В этом случае,просто увеличить нагрузку, изучать и функции и классы, тяжело, но интересно т.д.
Просто сейчас работаю над минимальными требованиями, их не много, но они ключевые.
например, как, понять метод, если мы не понимаем функцию, функция должна быть изучена заранее или хотя бы первее, так как, если смотреть предыдущее сообщение,
то наше внимание уже должно быть сосредоточено на передаче первого аргумента обязательному параметру self, то есть мы уже должны свободно владеть параметрами, читать и применять.
И все классы пронизаны таким понятием, как функциональный объект. То есть объект ведущий себя. как функция. При этом чётко понятно, что это не функция, но поведение тех же параметров будет. как у функции. То есть исключения для класса будут абсолютно такие, как у функций, но ведь понятно, что класс - это не функция. Но понимание функции нам нужно для понимания работы класса, но в то же время, если брать исключения, понимание работы функций и параметров функций и исключений функций(почему я сразу и делаю упор на них),
будет работать по тем же законам, что и функции один к одному.
Что в голове сводит функции, классы. методы, как одного поля ягоды, больше нет раздрайфа и все начинает восприниматься, как единое целое.
Если решить, что потом, то есть никогда. То о результате таком я уже писал в первом сообщении.
Или второй пример, при прохождении классов для нас уже есть все необходимое. что бы поставить на место типы данных и вывести их на должный уровень.
Представим, что мы не понимаем функций, как результат не понимаем методов, как результат не понимаем работы классов, то есть точно не понимаем что и как передаётся и как это назвать для себя в уме. что бы это точно било с результатом.
При изучении типов данных нам нужно сосредоточится на методах типов данных, но никак на понимании работы самого метода, так как он работает. как обычная функция и понятно это должно быть заранее.
class Bag:
def __init__(self):
self.data = []
def add(self, x): # как работает функция должно быть твёрдо понятно.
self.data.append(x) # то над чем нужно работать
Практический совет.
Сначала прочтите сообщение Дениса. Обратите внимание на следующее его пояснение,
Сообщение Дениса.
Всем привет! Брал отпуск на неделю, нужно возвращаться в строй )) Немного мыслей выложу..1. Думаю что 20 лет назад обучение программированию проходило иначе, за недостатком информации.- Сейчас же всё растёт с того момента в геометрической прогрессии... И стало столько информации, что её тупо нужно уметь отсеивать и выделять главное..2. Если сначала обучения было вообще мне нихрена не понятно, долгое время..- То сейчас обучение идёт в той же прогрессии, я могу использовать какие то начальные знания, но они мои..- Дело в том чтобы достичь конкретного результата за короткое время нужно определиться конкретно, "Я хочу писать веб-сайты бэкенд или вместе с фронтом", или быть "Дата аналитиком", или "Кроссплатформенные приложения"... у меня цель еще немного плавает, я там попишу, там посмотрю, то поделаю ) порадовался результату, бросил пошёл дальше) этот путь явно занимает много времени- Для этого всего нужно время. Для качественного обучения нужна база. .3. Я пришёл в школу действительно с кусками кода в голове, Валерий помог это всё объединить за пару месяцев. .- И даже с этими началами знаний я брожу в сети и разбираю микро приложения и извлекаю на этом этапе опыт, чужие , свои, неважно) .- Также посмотрел уроков 20 Валерия, по джанго, собрал в кучу MVT, знаю по взгляду 70-80% ошибок.. что значительно экономит время,для сравнения год назад та ошибка, что занимала у меня 4 часа времени, сейчас это минута или десять.. ну короче и это я еще не разбирался с классами,так могу точечно загуглить прикинуть..!!! Реально облегчает работу, когда ты знаешь как должен выглядеть код на выходе, какой результат ты должен получить, и тут уже как в математикеесли знаешь одну переменную и то с помощью имеющихся инструментов ты воссоздаёшь код, да это не быстро, но это работает.Нужно решать задачи, всё пригодится, всём Удачи! Спасибо Валерию! Совет. Приведите в порядок функции. 1. Чтение параметров на лету. 2. Вызов и применение параметров. 3. Исключения связанные с параметрами (они самые часты при работе с любыми продуктами). Само изучение должно идти через исключения. Если мы изучаем матераил и у нас одно исключение, ставьте смело себе 1- бесполезно потратили время. 4. Загляните в функции блокчейн(solidity), там очень много параметров добавляется и самое главное там код имеет реальную цену, вы сразу задумаетесь над кодом в любом другом языке. Что Вы получите на выходе? Вы начнёте видеть что куда передаётся и начнёте уже читать исходный код. чуть позже придёт понимание почему, какие параметры, где ставятся. Все остальное f/else try/exsept можно изучить в любое время. Изучив функции, вы начнёте понимать материал школы более качественно и тогда точно настроитесь на волну..Чем отличается наша школа от других школ? В большинстве школ от тарабанят материал за определённое время. Но ведь сам изучающий человек себе почему то придумал, если я пройду курсы - я программист и дальнейшие выводы....но ведь получается совсем не так?У нас другой подход.Кто учится, и хочет писать, точно пишут код.Но у нас не практикуется перекладывание ответственности за результат на школу.Школа выступает в роли проводника к реализации мечты писать код профессионально.Можно представить школу себе, как навигатор, который помогает прийти к тому что бы писать, независимо от уровня подготовки, но очень зависимо от желания.Как школа помогает это сделать?Во- первых поэтапно, сначала нужно научится читать код, потом писать.Школа концертирует внимание на принципе изучения конструкций языков программирования, причём это работает для любых языков программирования. Когда понятен принцип, реализация не имеет значения, ведь происходит, то что мы ожидаем и понимаем.Школа выделяет одни конструкции языка по отношению к другим, например понимая функции по шаблону, который определён выше, легко можно понять методы и классы.В отличие от других школ, где материал даётся от начала до конца, что он превращается в кашу. У нас используется принцип формирования ядра языка (оно одинаковое для всех языков), откройте любой файл любого языка, там вы увидите методы и классы, значит ядро языка и должно составлять изучение методов, а где ноги растут в функциях.В школе используется такое понятие, как система работы с кодом, которая основана на работе с документацией и исходным кодом. Такого нет ни в одной школе в рунете.Бовсуновский не выступает, для вас учителем, какой код писать. Я сосредотачиваю внимание на том, что бы научить вас понять исходный код популярных, профессиональных библиотек, именно там Вы будете учится писать настоящий код и оттуда брать для себя шаблоны, я помогу научится его понимать.Если кто-то думает, что сел Бовсуновский и придумал такой способ обучения. Конечно нет. Это результат работы, а уже 15-ый год.У нас в школе за вами никто не гонится, важно понять что делать и делать можно спокойно.Писать, Вы точно будете и любой будет, только это не будет происходить без участия обучаемого, то есть без вашего.Поэтому начал писать, как можно проще сейчас видео (там ещё будут), что бы участники могли подготовить себя к серьёзному коду.Так вот, начните с того, что приведите функции в порядок в голове и доведите до блеска, считайте - это эквивалентом, что вы сели автомобиль, включили фары и начали двигаться, далее фары уже будут освещать дорогу и куда ехать точно будет видно. Но ведь это так просто. Если открыв любой код мы там видим функции. методы и классы, а начало понимания, лежит в функциях, то очевидно, функции нужно изучить, затереть, читать на лету. Все получится?
Денис, вот конец этой недели и седеющую всю неделю думай над этим.
Я написал задание для тебя в видео, ты все поймёшь с него. Жду от тебя по итогам просмотра видео план с изучением атрибутов и понимаем к чему должно привести к чтению уверенному.
Все в видео.
Несколько видео будут бесплатные - остальные будут обзоры на ютубе, хочется что бы увидели ребята, которые застряли,
https://www.youtube.com/watch?v=W-xyHrtKmIU
Главное не торопитесь, очень важно понять - это и есть ступенька которой не хватает в программировании классов, абсолютно всем.
Вы большой молодец, что поставили на первое место определение класса питон (рад за вашу внимательность), перечитайте осмысленно его ещё раз. ведь там чёрным по белому написано, что изучать в классах.
И поймёте, зачем я давал первое задание именно такое. как есть, что бы вы теперь могли отделить зерна от плевел, что нужно изучить досконально, а что в любом порядке.
Ребята не спите. а ноги в руки и идём делать за Денисом, легче делать в процессе. чем потом.
Рекомендация: Денис, отнеситесь к этому короткому видео очень серьёзно - это ваше будущее в классах, мало составить план, который мы будем потом править, обратите внимание я ещё определил, что ваш план должен вести к конкретным целям. Поэтому составьте, отложите на день, потом снова посмотрите и точно что-то измените, потом опять отложите на день, потом опять точно что-то измените, а потом уже присылайте. желательно с минимальными хотя бы выкладками кода.
P.S. Любой участник школы может выполнить задание и прислать, время на выполнение не ограничено.
Данное видео о атрибутах Пайтон будет полезно и новичкам и опытным разработчикам.
Новички, если внимательно будут слушать и сделают, как я сказал посмотрят два раза по минимуму в первый раз просто посмотрят и поймут, что как раз со стороны атрибутов открывается по настоящему Мир объектно-ориентированного-программирования настоящего, такой мир о котором мечтает каждый начинающий программист, не просто общее понимание, а именно осмысленное написание кода и как раз атрибуты и есть вход в это осмысленное написание и первый шаг к профессиональному программированию.
Но не торопитесь новички, посмотрите второй раз и уже тогда описывайте, что вы услышали,а ведь я сказал и о пороге входа в классы. когда мы хотим быть профи и о правильном изучении типов данных и о том, что открывая атрибут для себя, не просто. как знание, а как точку входа в ооп, для нас мир ооп открывается с совершенно практической стороны, в котором логически выстраиваются все вещи, которые и являются кирпичиками ооп, self, экземпляры, методы, полное и глубокое освоение типов данных, я не зря рассказывал про порог входа в котором упомянул итерации, так как же я назвал самый мощный метод изучения программирования, какой и практикуется у нас в школе и результат на лицо на примере конкретного человека.
В любом случае новички точно выстроят правильно первые шаги работы с атрибутами и не просто поймут это, но и осознают, заметьте материал даётся легко вам, потому что выстроен правильно, легко ответить на вопрос, почему у вас не получается писать код на данном этапе, ответ так же есть в этом видео - не вернвый подход, не верный порядок изучения. Все это вы можете восполнить в школе, ниже ссылки.
А опытные разработчики посмотрев видео, обязательно задуматься вопросом, а на все ли 100 % я использую атрибуты, до конца ли я понимаю с позиции атрибутов работу классов и экземпляров, находятся ли эти знания у меня на уровне считывания в коде или я только ориентируюсь по исключениям. Как раз таки атрибуты повысят тот порог знаний опытных разработчиков, когда опора будет не только на исключения, но и на простую логику, которая вытекает из подхода взгляда со стороны атрибутов на ооп в целом.
Конечно в этом видео есть знания, когда люди ищут ответ на вопрос, когда же я стану программистом, что для этого нужно?
Видео длинное, немного перегружено информацией, но тем не менее эта информация имеет прямое влияние на результат. Рекомендую проработать это видео с карандашом, результа вас порадует, по минимуму, вы осознаете, что есть иной подход, именно такой подход ведёт к профессиональному программированию.
Давайте попробуем помочь ребятам через Дениса.
https://github.com/beeware/toga/blob/main/core/src/toga/app.py
Общий вывод. Понимание различий между атрибутами класса Python и атрибутами экземпляра Python должны быть проработано с нуля и сразу до высочайшего уровня и так же считываться на лету, как параметры функций и именно отталкиваясь от этих знаний выстраивать дальнейшую логику.
Метод проработки, через исключения.
Зачем - что бы понять разницу, для применения атрибутов класса и экземпляра(кстати у них разные пространства имён и при одинаковых именах будет выдаваться. что-то одно, то есть нужно понять ещё и приоритет)
Когда будет понятна разница между атрибутами класса Python и атрибутами экземпляра Python, станет понятно их применение и ответ на вопрос почему именно так отпадает сам, так как, атрибуты класса и атрибуты экземпляра имеют разный вызов разные пространства имён и исходя из этого абсолютно разное применение(ведь не зря я вам дал пример с джанго выше). Видимость и вызовы будут в этом случае иметь значение.
Практический навык отработать на исходном коде и использовании API(писать сайт, программу) и чётким выделением атрибутов класса и атрибутов экземпляра, сразу анализируя ситуации, сопоставляя исходный код и применение. (только так будет видно)
И Ура, путь в ООП тогда открыт.
План набросал общий, при работе в этом направлении он приобретёт намного больше подробностей, но направление должно быть понятно.
Если кто-то сомневается. то открываем файл 1
файл 2
https://github.com/django/django/blob/main/django/views/generic/list.py
или любой другой в любом языке.
Я лично там ничего не увидел практически, кроме атрибутов.
Идея думаю понятна.
Дмитрий(swaytornado). Вы. когда будете смотреть видео,
что нужно увидеть в этом видео, это короткая статья об этом.
https://www.youtube.com/watch?v=Bun1_H4bxbw
прочтите это, а после видео опять прочтите.
Видео не могло быть записано, полностью, как инструкция, иначе не было бы пользы.
Но вот цель была.
Но так ли это?
В чём их ошибка, они пытаются читать документацию. а потом пробуют смотреть исходный код, но так как там ничего не понятно забрасывают.
А что нужно смотреть в исходном коде?
Исходный код смотреть нужно учиться, как раз об этом это видео и оно отражает заполнение логики класса или метода.
Предварительные условия:
Профессиональное владение функциями и параметрами.
Знание объектов.
И в видео я показал, что Вы как вопрошающий учитесь видеть идею.
Но обратите внимание, Вы используете подход, который завязан на атрибуте, но при этом вытаскиваете логику.
Простота в том, что на вряд ли вы наберёте набор логик больше 20-ти.
Ну например логика итераций (да сами итерации могут иметь до 10 вариантов и больше, но ведь сама логика одна
метод проверки или информации
self.attr.method
self.attr.__help__
применение типа данных, как в тога 43 строка
self.elements.add(window) #add встроенный метод множеств - а элементов три, но на их месте может быть и дандер(понять в каких ситуациях третий нужен, согласитесь это действие и как правило извне)
и так далее
проверка......
Вы выясняете это смотря на код.
Важно. Обратите внимание мы не ищем ответ как работает там что-то в программе, смотрим документацию и если не понятно, то смотрим исходный код. (это потом так будет)
А сейчас нам нужно подойти к этому, поэтому мы ставим задачу вычленить логику в принципе, как некое действие, которое можно описать и потом использовать в схожих ситуациях(это я называю полуфабрикат)
так вот этих логик принципиальных очень мало их и нужно увидеть и записать себе. а потом чем дальше, тем лучше это будет видно.
Что бы быть профессиональными, ещё раз повторяю мы заходим в данном случае с атрибутов, но цепляем логику.
То есть у нас в голове есть идея ковырнуть, при помощи атрибута, при этом вычленить сам элемент, что это метод, переменная зачем он здесь и как и что делает.
Если б мы делали. как делают большинство, просто смотрят доки, а потом пытаются понять в исходном коде, то выхлоп нулевой, ведь нас интересует не что происходит, а как происходит, посредством чего происходит и почему именно так?
Это похоже на пульт, нажали кнопку и посмотрели. а потом запоминаем относительно расположения и нужного действия.
Но это самое нужно действие нужно сначала создать искусственно, как, мы сделали с атрибутом.
Делая так. мы начинаем видеть полное действие и этих полных действий не так уж и много, дальше просто будут меняться методы, переменные и решаться разные задачи, но например. когда мы будем видеть вот это
self.elements.add(window)
мы будем понимать, что это дополнительное действие вместо адд может быть что угодно, смысл будет понятен, по конечному будем определять что происходит.
Начнёт работать и обратное, если я хочу провериить класс могу ...
если провести действие могу ...встроенный метод
а могу и сам написать......
и везде будет сам объект , в данном случае window, который был ранее проверен, что бы другого не добавили.
Но смысл не меняется, сама процедура идентична, а вариантов десятки.
Кроме этого потом начинаем делать три в одном.
Читать доки
Смотреть исходники
Писать программу
и если ранее была проделана работа, которую описал и о которой видео, то исходники открываются.
Да дополнительно сказал, не нужно много сейчас с SOLID, следите пока за одним, что бы класс выполнял, только какое то одно парное действие, вбейте эту привычку. так начнёте видеть его и код будет чистый и дорабатывать пока не посинеешь и все запоёт. Пока хотя бы это правило.
И там же сказал, что вычленяем само действие класса и не путаем с дополнительными методами, как показал на примере WindowSet, то есть методы, которые обеспечивают работу самой конструкции(проговорил в видео)
В итоге у нас вырисовывается картинка
атрибуты говорили от чего оттолкнуться:
Объекты класса поддерживают два вида операций: ссылки на атрибуты и создание экземпляра.
потом выделяем итерации и основательно изучаем
дорабатываем типы данных, а главное методы.
Только не берите много, я сказал 3 -5 одного второго третьего и применяйте.
так на выходе у вас будут конкретные полуфабрикаты решения задача в теле классов. то что сейчас вам и нужно.
Думаю подсказал достаточно.
Важно, что бы теперь к этому пришли практически и потом будете офигевать, как я этого всего ранее, не видел.
Просто не знали, что нужно увидеть.
И это первые шаги, дальше будет интереснее.
1 2 >