Делаем из себя программиста Python Django по шагам.

Python 3 + cовременные версии Django 1.11 LTS и Django 2.0 +.

Перейти ко всем курсам.



Сейчас акция!

Ты можешь получить доступ к этому разделу в подарок во время этой акции!

Смотреть Акцию. »

Обширный материал.

Школа работает с 2013 года, более 10-ти суток видео уроков, это тебе поможет

Смотреть. »

Выбираешь язык?

Ещё определяешься с языком, почитай почему Python?

Почему Python? »



Пути изучения


 

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

 

На примере нашего участника записал для всех

Как выучить язык программирования с нуля - видео инструкция.(на примере Python, Kotlin).

 

 


 

 

Нарабатываем опыт Python ООП. Как делать правильно?

 


Как новичку начать писать в стиле ООП, именно молниеносно изучить.


Магия Python. Как новичку начать писать код, который не все старички могут писать?


 

 

 

Далее приведу переписку, с которой видно, как идёт сам процеес в группе.

 

В помощь начинающему разработчику. Уважаемые программисты начинающие это для вас.
Я к вам буду обращаться только так сейчас, программисты.  Ребята это уже ваша реальность.
Вы программист.
Записал видео, посмотрите это видео к этой статье



видео
https://www.youtube.com/watch?v=rCBv0EW0xFw

статья
https://spb-tut.ru/guest/pages/300/

 


Листинг 1.

Задание первое прежде, чем дать полноценное домашнее задание
.

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

Приведите примеры кода из пайтон (это могут быть любые примеры)

Важно понять ещё и ещё раз, что есть основа ООП (язык любой)

Часть 1.

Инкапсуляция? Объяснить своими словами, что такое, Именно в пайтон. Привести пример кода.


Наследование.  Объяснить своими словами. Привести пример кода и показать наследование.


Полиморфизм показать на примере. И объяснить своими словами.

**********************************

Почему важна первая часть и хотя вы делали уже, я снова прошу вас сделать это? Так как у вас на автомате должно отложится, что если язык поддерживает эти три вещи, значит реален настоящий ООП.
Что бы научиться думать в этих категориях нужно очень точно уяснить что это такое.
Нужно глубоко понимать и легко видеть в коде.


Часть задания два.

Клеем ООП в Пайтон является self.

Переписать написанный код для первого задания с использованием self.

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

Кому то может показаться это не очень важным.

Запомните главное. Не очень важное это ваш рабочий код.
А то что касается базовых понятий это и есть важное, именно из-за непонимания базовых вещей потом получаем ошибки и не знаем. как делать.


Для людей, которые только начинают в ООП руководствоваться этим курсом, что бы вникнуть
https://spb-tut.ru/guest/pages/299/

Интренетом, книгами любыми.

В итоге раз и навсегда эти понятия уметь написать, именно написать в коде и прочитать и понимать.
Кстати в Kotlin все это также прсутствиует, но это будем изучать на сайте kotlin.

Мои требования. Мы не идём дальше пока не разберём полностью. Если выплывает то что необходимо ещё понять решаем дополнительно. В этом и есть сила курса в реальном времени, все не упомнишь, а то что важно
само себя проявляет по ходу.

Я видел сообщение, что сергею осадчему интересно дальше проходить, хотелось бы увидеть в этом разделе А Ситушкина, Володю Семеновича, ребята на носу блокчейн и более крутые вещи.
Пора создать очень ясную карту пайтон ООП,. Очень рад буду примерам кода каждого участника. Ребята ведь для себ делаем. Это и есть реальное, самое что есть реальное изучение пайтон. Самое настоящее.

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

Стиль курса. Участник делает сам задания и всё своими словами, книжных слов здесь не нужно. нужно понимание каждого, простое человеческое понимание и код, код. код.

Для тех, кто ещё совсем чайник, чиать это там написано что делать до
https://spb-tut.ru/python-oop-docs/before_oop/start/

и эту статью
https://groups.google.com/d/msg/spb-tut/TAUbgF321NY/sw1Uf9mfAwAJ

**********************
P.S. Знаю, что Сергей Осадчий будет точно делать. Сергей не торопитесь сделать быстро. Хорошо подумайте и сделайте так, что бы и вы очень чётко поняли и каждый кто будет читать понял.

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


"""
Наследование подразумевает то, что дочерний класс содержит все атрибуты родительского класса,
при этом некоторые из них могут быть переопределены или добавлены в дочернем.
"""

class My_class(object):  # Класс.

    def variable (self): # Метод класса с одним обязательным параметром self.
        self.a = 5       # self ссылается на объект (a) значение которого 5
        print(self.a)    # Вывод.


x = My_class()          # Переменной х присваиваем значение класса My_class() и теперь переменная х
                        # является экземпляром класса.
x.variable()            # Через точичную нотацию получаем доступ к методу класса variable.

#--------------------------------------------------------------------------------------------------

class New_class (My_class): # Создаем новый класс, но в скобках вписываем не (object) а (My_class).
    pass                # Теперь New_class наследует все чтот есть в (My_class).
                        # New_class пустой класс в нём ничего нет и он ничего не делает.
                        # Тем немение так-как он наследует класс (My_class) мы через него получем
                        # доступ к методу variable().
b = New_class()         # Переменной b присваиваем значение класса New_class() и теперь переменная b
                        # является экземпляром класса.
b.variable()            # Через точичную нотацию получаем доступ к методу variable() класса (My_class).

 

--
© 2009-2018 Валерий Бовсуновский - Школа практики Django + Python.

 

"""
Инкапсуляция — ограничение доступа к составляющим объектов компонентов (методам и переменным).
Инкапсуляция делает некоторые из компонентов доступными только внутри класса.

Инкапсуляция в Python работает лишь на уровне соглашения между программистами о том,
какие атрибуты являются общедоступными, а какие — внутренними.

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

Двойное подчеркивание в начале имени атрибута даёт большую защиту: 
атрибут становится недоступным по этому имени.
"""


class My_class1 (object):

    def variable (self):       # Обычный метод.
        self.a = 5
        print(self.a)

    def _variable1 (self):     # Одиночное нижнее подчеркивание метод доступен только по имени .
        self.a1 = 10
        print(self.a1)

    def __variable2 (self):    # Двойное нижнее подчеркивание, недоступен по этому имени.
        self.a2 = 20
        print(self.a2)

z = My_class1()
z.variable()
z._variable1()
#z.__variable2()

 

"""
Полиморфизм

Полиморфизм - разное поведение одного и того же метода в разных классах.
Например, мы можем сложить два числа, и можем сложить две строки. 
При этом получим разный результат, так как числа и строки являются разными классами.
Результат зависит от типа объекта.
"""

class Polyformism (object):

    def A_plus (self, x, y):
        self.x = x
        self.y = y
        print(self.x + self.y)


p = Polyformism()
p.A_plus(1, 1)
p.A_plus("1", "1")

# self - ссылка на объект а в Python всё объекты.
# self - обязательный аргумент, содержащий в себе экземпляр класса, передающийся при вызове метода,
# поэтому этот аргумент должен присутствовать во всех методах класса.

 

--


Берём быка за рога. В код с головой. В профессиональный код.

Спасибо, Сергей вижу, что понимаете. СПасибо за доступное домашнее задание.

И так простые вещи мы и так освоим, поэтому полезем сразу в магию Пайтон, а потом уже будем подсоединять простую работу с типами объектов.

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

И так давайте брать быка за рога.

Наша ближайшая цель.

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

Далее по жизни вы сами выберите, как писать вам.

 В данном примере важен сам пример а не понимание.  Например в Джанго, когда мы создаем абстрактный класс, а потом от него наследуем какую то модель, пусть самую простую.
Нам кажется это простым, ну делов то, поставить слово, abstract и все дело сделано. Но если открыть исходный код, то там его много. Для нас это просто Джанго вывело простые api, но если задуматься, то внутри джанго
сделало намного больше. Оно прочитала что создан класс, но так как он абстрактный, то запретило, ему связываться с базой, потом при помощи мета класса (на лету), создала новый класс, дало ему наше название и включило поля
нашего вновь созданного класса, а потом ещё и с базой соедитнило и там создало все поля.
 Но как вы успели заметить, нам то пришлось ввести только одну команду и написать наш класс.

По сему ответ таков, Пайтон мистически мощный инструмент и мы можем сделать очень сложные вещи, но на верху сделать их простое применение.

Эту тему используют единицы, но используют поистине профессионалы. Люди владеющие таким знанием и пишут Джанго и другие вещи, которые меняют мир.

Давайте и мы начнём двигаться в этом направлении.

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

А пока давайте начнём  с малого.

Задание 2.

Найдите и объясните что такое констуктор __init__ (здесь два нижних подчеркивания)

Вопросы:
что это?
Его роль?
Как это работает?
Что он делает?
Как это влияет на удобство?


приведите пример кода.

И уже в соответствии, что будет приведено я задам направляющие вопросы.

Хотя вот он основной вопрос.
Серёж большинство людей в пайтон пишут __init__ и скорее всего не очень то задумываясь зачем его пишут.
Вот вы только что прислали код по домашнему заданию и прекрасно обошлись без __init__

Так вот вам и вопрос, что бы изучение не было бездумным, а именно осмысленным и направленным.
Вопрос (может немного не обычно, но поставлю именно так)

При каких условиях использование __init__ будет идеальным вариантом?

Подсказка. Что бы ответит на этот вопрос верно, нужно написать код с __init__ и без __init__ и ответ на вопрос, связн именно с атрибутами класса.

Найдите ответ каким образом.

И уверяю вас, больше бездумного использования не будет, вы точно будете знать нужен вам в опредлённом случае __init__ или нет.


НЕ переживайте я чуть что направлю.




 


Сразу в ООП было сложно въехать. Я читал у Лутца про повара и плиты на которых он готовит и ничего не понимал.
и в то же время применял классы в различных библиотеках к примеру в tkinter или PyQt.

Александр, ты дал сразу и ответ. Нужно писать.

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

P.S. Вопрос, который задавал Сергею осадчему здесь
https://groups.google.com/d/msg/spb-tut/TAUbgF321NY/2mbZ4i2cAgAJ

Ответ увидел у А. Ситушкина. (Саша огтветил на него, но между строк). Только Вам Сергей нужно внимательно посмотреть код и сформулировать, как ответ именно к этому вопросу, что бы в голове уложилось.

При каких условиях использование __init__ будет идеальным вариантом? Что должно быть обязательным результатом?

 

--
© 2009-2018 Валерий Бовсуновский - Школа практики Django + Python.
---

 


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

////////////////////////////////////

Потому что следующий шагом, открою Секрет будет использование __init__ именно, как метода(не путайте это с моим вопросом) + super

//////////////////////////////

Вот забрасываю удочку на будущее, здесь мощный вариант кода и когда новичок будет смотреть, ему будет казаться это не реально тяжёлым, а на самом деле нужно понимать все два аспекта и код очень, очень простой, тогда становится
http://python-android.spb-tut.ru/lessons/page_exp/26/

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

Ладно жду ответа на задание
https://groups.google.com/d/msg/spb-tut/TAUbgF321NY/2mbZ4i2cAgAJ

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

P.S. Для других ребят. Да, да, ребята писать начальном этапе до испарины на лбу. Если вы настроены просто читать сообщение, то программирование пройдёт мимо вас, именно настоящее программирование.
Стоните, оливайтесь потом, злитесь, но пишите. Пройдёт тяжёлый период понимания и станет просто и в кайф. Но период рождения, каждый должен пройти самостоятельно.

Результат будет, гарантия Бовсуновского (знак качестваа СССР) на личном опыте.

 


Начните сейчас

Во всей школе более 10-ти суток видео уроков. Идём в ногу со временем, сейчас в скидку входит и доступ к мощному курсу, делаем из себя программиста, где показаны уроки на примере версии Django 2+

Мега Акция



© ИП ВАлерий Бовсуновский 2013-2017