Курс Python 3 | Работа с классами и экземплярами

Поділитися
Вставка
  • Опубліковано 28 бер 2019
  • ПОДДЕРЖАТЬ АВТОРА И КАНАЛ:
    www.liqpay.ua/ru/checkout/380...
    Webmoney:
    Z166344793421
    R369744777501
    U871336351200
    RU КОМЬЮНИТИ ПО PYTHON:
    t.me/python_scripts
    Классы могут использоваться для моделирования многих реальных ситуаций.
    Сегодня мы поработаем с классом для создания автомобилей, в котором будут определенно полезные нам методы.
    Будет интересно, так что готовим редактор, запускаем и продолжаем обучение!
    ДОМАШНЕЕ ЗАДАНИЕ:
    docs.google.com/document/d/17...
    КУРС ПО HTML5 & CSS3:
    • Знакомство с основным ...

КОМЕНТАРІ • 102

  • @chi4208
    @chi4208 2 роки тому +17

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

  • @morpex2904
    @morpex2904 3 роки тому +10

    Задание со звёздочкой.
    Не судите строго)
    class User():
    """Класс по созданию пользователей"""
    def __init__(self, login, password):
    """Инициализация атрибутов пользователя"""
    self.login = login
    self.password = password
    self.count = 0
    def log_in(self, log_in, pass_word):
    """Логин и счётчик логинов"""
    if self.login == log_in and self.password == pass_word:
    print('Добро пожаловать в аккаунт, ' + self.login.title())
    self.count = self.count + 1
    else:
    print('Вы неправильно ввели логин или пароль.')
    def unlogin(self, check):
    """Выход"""
    if check == 'Выйти':
    print('До свидания, ' + self.login.title())
    def print_count_of_logins(self):
    """Вывод счётчика логинов"""
    print(self.count)
    user1 = User('Ivan', 12345) # Создание пользователя
    user1.log_in('Ivan', 12345) # Логин
    user1.unlogin('Выйти') # Выход
    user1.log_in('Ivan', 12345) # Логин
    user1.unlogin('Выйти') # Выход
    user1.print_count_of_logins() # Вывод счётчика

    • @cocojabaa
      @cocojabaa Рік тому

      у меня примерно такой же)

  • @user-xc4uo2nu8q
    @user-xc4uo2nu8q 3 роки тому +28

    Если кому то интересно, уроки ведуться по книге Мєтиза Єрика "Узичаем Python" 3-е издание

    • @andrievskii
      @andrievskii  3 роки тому +11

      Все верно!

    • @user-xc4uo2nu8q
      @user-xc4uo2nu8q 3 роки тому +3

      @@andrievskii очень полезно читать потом закреплять видео уроком, Спасибо.

    • @kinddemon9779
      @kinddemon9779 3 роки тому

      @@user-xc4uo2nu8q я тоже так делаю

  • @anns.3322
    @anns.3322 5 років тому +8

    Ура, наконец-то нашла человека, который доходчиво объясняет классы простым смертным 🙏

    • @andrievskii
      @andrievskii  5 років тому +3

      Надеюсь и в дальнейших уроках все будет так же понятно ))

  • @user-sg9uc8yg3b
    @user-sg9uc8yg3b 4 роки тому +2

    Спасибо большое! Вы очень хорошо обьясняете! У Вас просто талант к этому!

  • @jozakatkin
    @jozakatkin 4 роки тому +2

    Спасибо за ваши уроки! Все понятно

  • @marinaurrey5246
    @marinaurrey5246 5 років тому +2

    Замечательный урок! Спасибо).

  • @muradverdiyev5252
    @muradverdiyev5252 Рік тому

    Ну как сказать , ну как выразить свое блогодарность за токую проделанную работу. ОГРОМНОЕ ТЕБЕ СПАСИБО

  • @romaroman8204
    @romaroman8204 5 років тому +30

    Решение :
    def increment_odometer(self, km):
    if km >= 0:
    self.odometer_reading += km
    else:
    print('Ошыбка')

    • @mixfir8173
      @mixfir8173 4 роки тому +2

      *ошибка

    • @user-zg2mo1yy2x
      @user-zg2mo1yy2x 4 роки тому +8

      @@mixfir8173 *это было в шутку

    • @Posol86
      @Posol86 4 роки тому +1

      self.odometer_reading += abs(km)

    • @justsmile963
      @justsmile963 3 роки тому +1

      Или же наоборот:
      def increment_odometr(self, km):
      if km < 0:
      print(Грязный читер!)
      else:
      self.odometer_reading += km

    • @DizzyPhysics
      @DizzyPhysics 3 роки тому

      Можно ведь просто использовать функцию модуля (abs()) на аргумент km.

  • @andrewharazdowskyy4771
    @andrewharazdowskyy4771 3 роки тому +2

    Кратко. Доступно. Понятно. СПАСИБО. Подписался.

  • @syd6358
    @syd6358 2 роки тому

    Спасибо, очень круто даете материал. Надеюсь у вас все хорошо.

  • @tbassir9076
    @tbassir9076 Рік тому

    Всё очень классно и понятно! Респект!

  • @user-ck1bc3dg4f
    @user-ck1bc3dg4f 4 роки тому

    Как обычно выше всяких похвал:)

  • @valley527
    @valley527 4 роки тому +1

    огромное спасибо вам за уроки, наконец, благодаря вам я понял суть классов. Читал книгу Мэтиза, но понял только после ваших уроков

    • @andrievskii
      @andrievskii  4 роки тому +4

      На это и рассчитано, чтобы максимально ясно и доступно объяснить

  • @kekwwwwk
    @kekwwwwk 3 роки тому

    Спасибо. Понял ооп благодаря вам.

  • @traffox
    @traffox 4 роки тому +7

    Класс! Очень подробно и доходчиво. Теперь... я знаю кунг-фу )

  • @user-qs7st3sw8c
    @user-qs7st3sw8c 3 роки тому +1

    Андрію,Ви такі фундаментальні речі вкладаєте як аксіому але нажаль новачкам більшість речей буде важко зрозуміти по факту відсутності первинних знань,вееееличезний песпект вам за вашу роботу,сподіваюся що Ви сприймаєте критику та вважаю що багато людей були б дуже вдячні за детальніший опис суті конструктиву мови програмування,Дякую

  • @user-se4vc9ep8k
    @user-se4vc9ep8k 5 років тому +8

    Боже, не могу поверить. Я наткнулась на ваше видео СЛУЧАЙНО, мне не хватало знаний по ООП, но теперь благодаря вашим видео я знаю python почти в совершенстве, спасибо большое, честно, спасибо :)))

    • @Alex-hh5oe
      @Alex-hh5oe 4 роки тому +5

      Скорее всего Ваше "почти" все еще большого размера)

    • @user-sm7gu3ld2x
      @user-sm7gu3ld2x 4 роки тому

      @@Alex-hh5oe да-да)

    • @traffox
      @traffox 4 роки тому

      Прям как и я ))

  • @alisher-qe5cf
    @alisher-qe5cf 4 роки тому

    Почему-то после того как вы объяснили мне все наконец-то дошло

  • @litescan5179
    @litescan5179 4 роки тому +2

    Андрей спасибо за работу! Только не ленитесь повторять значение элементов в коде.. смотрят новички, и часто смотрят не полным циклом видеозаписей.. спасибо

  • @twister4839
    @twister4839 4 роки тому +2

    Святой человек!

  • @geparrda
    @geparrda 4 роки тому +1

    Очень хорошо обьясняешь

  • @_name8097
    @_name8097 3 роки тому +1

    def increment_odometer(self, km):
    self.odometer_reading += abs(km)
    Просто km взять в abs()
    abs() - это метод который возвращает модуль числа. Если мы укажем -10 то abs() перепишет его в 10

  • @leon1595
    @leon1595 5 років тому +4

    Было бы неплохо если бы вы рассказали про метод super, а так-же про super().init() .У вас очень хорошо получается объяснять, не понимаю почему у вас так мало просмотров.

    • @user-jh5ie2ds6c
      @user-jh5ie2ds6c 4 роки тому +1

      поддерживаю инициативу!))
      было бы очень кстати)

  • @TRX_144
    @TRX_144 3 роки тому

    Подскажите плиз можно ли из одного класса менять как то параметры другого- если да то как это правильно сделать

  • @blenderast8862
    @blenderast8862 4 роки тому +2

    print(спасибо большое,очень хорошо объясняете!!!")

    • @beardedman721
      @beardedman721 Рік тому

      Пропустили открывающие кавычки, код выдаст ошибку))

  • @art_is_hazy
    @art_is_hazy 5 років тому +2

    Круто )

  • @reiser8369
    @reiser8369 5 років тому +2

    Ты лучший, тупо все понял))))) Покодил, сделал свое, просто бомба)

    • @andrievskii
      @andrievskii  5 років тому

      Мне приятно осознавать, что мои видео уроки приносят результат

  • @shermuhammadwolf10
    @shermuhammadwolf10 5 років тому +6

    Красава ждем django2 спасиба

  • @gx5037
    @gx5037 5 років тому +7

    Книга Эрика Метиза "Изучаем Python" Второе издание - оттуда все эти задачки...

    • @andrievskii
      @andrievskii  5 років тому +6

      У меня 90% задач и примеров с книг взяты!

    • @gx5037
      @gx5037 5 років тому +3

      @@andrievskii просто видос могут забанить, будь осторожнее

    • @overparser
      @overparser 4 роки тому +7

      @@gx5037 это невозможно

  • @denismerigold486
    @denismerigold486 5 років тому +1

    Спасибо!

  • @TridoknayT1
    @TridoknayT1 Рік тому

    Как минимум за Д/З стоит поставить лайк

  • @tbassir9076
    @tbassir9076 Рік тому

    почему то выдаёт ошибку в 21 линии заполнил, как на экране my_car('audi', 'a4', 2017)

  • @user-xz9lp9kg5t
    @user-xz9lp9kg5t 4 роки тому

    как понять эту ошибку?
    TypeError: object.__init__() takes exactly one argument (the instance to initialize)

    • @user-lp8ng3kp4c
      @user-lp8ng3kp4c 4 роки тому +1

      Вы видимо забыли дописать атрибут self

  • @immu9703
    @immu9703 4 роки тому

    делаю всё тоже самое, но Python ругается на аргументы... VisualCode 2019. Не работает, и не пойму в чём дело.

    • @incognito5797
      @incognito5797 4 роки тому +1

      попробуй установить нужные расширения, например базовое расширение питон, собственно для работы с питоном)

  • @ArtyoMajas
    @ArtyoMajas 4 роки тому +4

    А зачем конкатенировать там где нет необходимости?

  • @vitalijsawizki6816
    @vitalijsawizki6816 3 роки тому

    Парни почему не работает ?
    if self.odometer_reading < 0:
    print('This action is not allowed')
    else:
    self.odometer_reading += km

  • @user-uy3jh4hr7z
    @user-uy3jh4hr7z 4 роки тому

    Андрей, спасибо большое за урок!
    У меня вопрос.
    Если эту конструкцию:
    def update_odometer(self, km):
    if km >= self.odometer_reading:
    self.odometer_reading = km
    else:
    print('Не стоит с этим баловаться, дружище!')
    Изменить на:
    def update_mileage(self, km):
    """Обновляем пробег мотоцикла"""
    if km > self.mileage:
    self.mileage = km
    elif km == 10000:
    print('(!) ПОРА НА СЕРВИС. (!)')
    else:
    print('Не стоит с этим баловаться, дружище!')
    Интерпретатор не выводит "ПОРА НА СЕРВИС" при соответствующем вызове.
    С чем это связано? Похоже, что я где-то сильно поплыл...
    Заранее, спасибо!

  • @user-sx5vs5tn4c
    @user-sx5vs5tn4c 3 роки тому

    Кто-нибудь знает можно ли посчитать количество выполненных методов, допустим, сколько раз был выполнен какой-либо метод?

    • @andrievskii
      @andrievskii  3 роки тому +1

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

    • @user-sx5vs5tn4c
      @user-sx5vs5tn4c 3 роки тому

      @@andrievskii спасибо, попробую

    • @user-sx5vs5tn4c
      @user-sx5vs5tn4c 3 роки тому

      @@andrievskii Попробовал, не получается, возможно я что-то не то делаю, значение глобальной переменной остается всё равно равным 1, не увеличивается при повторном вызове метода, не понял до конца как сделать инкрементом плюс к значению из глобальной переменной

    • @motor2298
      @motor2298 3 роки тому

      @@user-sx5vs5tn4c i += 1

  • @DizzyPhysics
    @DizzyPhysics 3 роки тому +1

    Домашнее задание решается путём написания функции модуля (abs()) на аргумент km)))

    • @sitd1751
      @sitd1751 3 роки тому +1

      Тогда же он будет увеличивать при добавлении отрицательного значения. Нам в данном случае просто нужно поставить фильтр. Если.. > 0.. иначе..

  • @user-lf6bl7jf3p
    @user-lf6bl7jf3p 4 роки тому

    Надеюсь верно (задание со звездочкой):
    class User():
    """Класс для сайта"""
    def __init__(self, first_name, second_name):
    """Описание пользователя"""
    self.first_name = first_name
    self.second_name = second_name
    self.kolichestvo_vhodov = 0
    def login(self):
    """Метод чтобы залогиниться (Пользователь указывает имя,фамилию при входе"""
    a = input("Введите имя: ")
    b = input("Введите фамилию: ")
    self.first_name = a
    self.second_name = b
    print("Здравствуйте, ", self.first_name.title(),self.second_name.title())
    def login2(self):
    """Метод чтобы залогиниться (Пользователь указывает имя,фамилию при создании экземпляра"""
    print("Здравствуйте, ", self.first_name.title(),self.second_name.title())
    def kolichestvo(self):
    """Считает количество входов + выводит количество заходов"""
    self.kolichestvo_vhodov = self.kolichestvo_vhodov + 1
    print("Вы вошли ", self.kolichestvo_vhodov, " раз")
    def razloginitsya(self):
    """Метод чтобы разлогиниться"""
    print("Вы вышли из своего профиля")

    user1 = User("sam vvedet", "sam vvedet")
    user2 = User("Николай", "Петров")
    user1.login()
    user1.kolichestvo()
    user1.razloginitsya()
    print(" ")
    user1.login()
    user1.kolichestvo()
    user1.razloginitsya()
    print(" ")
    user2.login2()
    user2.kolichestvo()
    user2.razloginitsya()
    print(" ")
    user2.login2()
    user2.kolichestvo()
    user2.razloginitsya()

    • @_digitall_
      @_digitall_ 4 роки тому

      Не читал задание, но мне кажется можно обойтись без login2 просто подставив изначальные значение параметров имя и фамилия в конструкторе

    • @ache070707
      @ache070707 4 роки тому

      хорошо, но последний обьект я бы сделал вот так:
      def razloginitsya(self):
      """Метод чтобы разлогиниться"""
      input("Нажмите чтобы разлогиниться!")
      return print("Вы вышли из своего профиля")

  • @burialstance
    @burialstance 4 роки тому

    abs(km)

  • @gx5037
    @gx5037 5 років тому +9

    ставьте скорость 1.5

    • @Alex-hh5oe
      @Alex-hh5oe 4 роки тому +1

      я на 2 смотрю)

    • @user-jh5ie2ds6c
      @user-jh5ie2ds6c 4 роки тому

      @@Alex-hh5oe а я - на 0.25

    • @_digitall_
      @_digitall_ 4 роки тому +1

      На х2 смотрю, и то медленно))

  • @1nparad1sepwnz79
    @1nparad1sepwnz79 Рік тому

    Если км > 0 до добавляем
    Иначе можете сами придумать)

  • @user-xz9lp9kg5t
    @user-xz9lp9kg5t 4 роки тому

    да кстати ты делаешь контаминацию слишком часто, даже там где можно обойтись и без неё

  • @SectorGm
    @SectorGm 4 роки тому

    class User:
    def __init__(self, first_name, second_name):
    self.first_name = first_name
    self.second_name = second_name
    self.sum = 0
    def login(self):
    self.first_name = name1
    self.second_name = name2
    print('Добро пожаловать ' + self.first_name + ' ' + self.second_name)
    def c_ount(self):
    self.sum += 1
    print("Вы вошли " + str(self.sum) + ' раз(а)')
    def dislogin(self):
    del self.first_name, self.second_name
    print('Вы вышли')
    def print_count(self):
    return self.sum
    name1 = input('Введите свое имя: ')
    name2 = input("Введите свою фамилию: ")
    Pearson = User(name1, name2)
    '''Pearson.c_ount()
    Pearson.c_ount()
    Pearson.c_ount()
    Pearson.c_ount()
    Pearson.login()
    Pearson.dislogin()'''

  • @user-ex6qx2ys5v
    @user-ex6qx2ys5v 3 роки тому

    Прохожу курс на скиллбоксе и там преподаватель на видео ооочень нудно и сумбурно объясняет про классы....очень нудно и трудно воспринимается. Этот роликсмотрю и всё сразу понятно и динамично объясняет, вообще супер!!
    P.S. мне никто не смог объяснить почему пишется в __init__ self.a = a, self.b = b, а работаешь всё равно с self.a(b), из-за чего путанница происходит внутри - вот есть же краткое название переменной (вместо self.a писать просто a), а тут я понял сразу почему так пишется!

  • @vadiculus5892
    @vadiculus5892 4 роки тому

    люди я не понимаю что такое self и __init__ напишите мне пж

    • @Lisa-yf5vn
      @Lisa-yf5vn 4 роки тому +3

      посмотри предыдущий урок в этом плейлисте, там про них рассказывают)

  • @user-zn8pb5gy3g
    @user-zn8pb5gy3g 4 роки тому

    Cо звездочкой:
    import time
    class User():
    def __init__(self,login, password):
    self.login = login
    self.password = password
    self.status = 'loged_out'
    self.sessions = 0
    self.logout = 'L'
    def authentification(self,log_check,pass_check,status='loged in'):
    if self.login==log_check and self.password==pass_check:
    self.status = status
    print(self.status + '. Time: ' + time.strftime('%H:%M'))
    else:
    print('Wrong login or password.Try again')
    return i_am.authentification(i_am.log_input(),i_am.pass_input())
    return i_am.logingout(i_am.to_logout())

    def logingout (self, logout_check):
    if self.logout == logout_check:
    print('Loged_out' + '. Time: ' + time.strftime('%H:%M'))
    return i_am.authentification(i_am.log_input(),i_am.pass_input())
    def to_logout(self):
    return input('Press "L" to_logout: ')
    def log_input(self):
    return input('Enter your login: ')
    def pass_input(self):
    return input('Enter your password: ')
    class Admin(User):
    def __init__(self, login, password):
    super().__init__(login,password)
    i_am = User('Chinazes12', 'Alex')
    i_am.logingout(i_am.to_logout())
    Автоматизирований

  • @ovilord6883
    @ovilord6883 5 років тому +1

    контент полностью скопирован с книги "Изучаем Python" даже примеры оттуда же

    • @andrievskii
      @andrievskii  5 років тому +8

      И?

    • @maksymkravets2608
      @maksymkravets2608 4 роки тому +1

      @@andrievskii и указывать надо, что вы сделали видео по книге

    • @dmutros78
      @dmutros78 3 роки тому +2

      @@maksymkravets2608 Пиши Навальному пусть разоблачение делает.

  • @user-fw5lz1tk4n
    @user-fw5lz1tk4n 2 роки тому

    хочу АУДЮ РСКью7 в кОрбане

  • @ElzaDeSico
    @ElzaDeSico 11 місяців тому

    class User():
    А зачем тут скобки?

    • @andrievskii
      @andrievskii  11 місяців тому

      Так принято при объявлении класса

    • @ElzaDeSico
      @ElzaDeSico 11 місяців тому

      @@andrievskii так принято, только когда нужно наследование, а тут его нет. Они тут явно лишние

  • @a12d14
    @a12d14 2 роки тому

    Готов утонуть в вашей критике задание со звездочкой) Где и как лучше сделать?
    from Tools.scripts.texi2html import increment
    from pickle import NONE
    class log():
    def __init__(self,login,password):
    self.login=login
    self.password=password
    self.inilizate=0
    def start_aut(self,km):
    self.inilizate=self.inilizate+km
    def autentification(self):
    print('login?')
    self.login=input()
    print('password?')
    self.password=input()
    self.inilizate+=1
    def printaut(self):
    print('login: '+self.login+'; password:'+self.password+'; vhodov: '+str(self.inilizate))
    def unlogin(self):
    self.login=None
    self.password=None
    self.inilizate=None
    new = log(None,None)
    print('bili li vi ranshe?')
    b=input()
    if b=='yes':
    print('skolko_raz?')
    b=input()
    new.start_aut(int(b))
    new.autentification()
    new.printaut()
    new.unlogin()