Специальная, подарочная акция получения доступа к Django4!
Как, я, начал код писать в Python? Смотрите, если уперлись и ничего не получается.
-
Давайте попробуем помочь ребятам через Дениса.
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 одного второго третьего и применяйте.
так на выходе у вас будут конкретные полуфабрикаты решения задача в теле классов. то что сейчас вам и нужно.
Думаю подсказал достаточно.
Важно, что бы теперь к этому пришли практически и потом будете офигевать, как я этого всего ранее, не видел.
Просто не знали, что нужно увидеть.
И это первые шаги, дальше будет интереснее.
Сам план из видео, читать здесь в группе(только участники школы программирования): https://groups.google.com/g/spb-tut/c/acWNFAt-J20/m/GUapHUVqBQAJ
Дмитрий написал:
Вот эту фразу можно переписать так:
Все данные в программе Python представлены классами или отношениями между классами.
А из чего состоят классы? Первое, что каждый класс образует своё пространство имен. Второе, чем наполнен класс. Атрибутами. Это поля и методы. У методов есть доступ ко всем полям.
А что есть производной от класса. Это экземпляр класса, который хранится в объекте класса. Который связывает конкретно этот класс с этим объектом, и соответственно с его атрибутами, то есть наполнением.
Класс, это чертеж нашего будущего объекта.
В коде мы работаем с объектами класса. И используем методы, которые являются пользовательскими функциями, написанными внутри класса, чтобы изменять этот объект, в соответствии с тем, что он позволяет с собой сделать.
Бовсуновский.
А я хочу, что бы Дмитрий разобрал память класса по кусочкам и этим уже оперировал. Только конкретика, больше никаких общих слов.
< 1 2 3 ... 6 7 8 9 >