Курс 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:
• Знакомство с основным ...
Просто бог изложения материала, многих пересмотрел на ютубе, но так подробно и доступно никто не объясняет, затрагивая каждую мелочь. Преподавательский талант очевиден.
Задание со звёздочкой.
Не судите строго)
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() # Вывод счётчика
у меня примерно такой же)
Если кому то интересно, уроки ведуться по книге Мєтиза Єрика "Узичаем Python" 3-е издание
Все верно!
@@andrievskii очень полезно читать потом закреплять видео уроком, Спасибо.
@@user-xc4uo2nu8q я тоже так делаю
Ура, наконец-то нашла человека, который доходчиво объясняет классы простым смертным 🙏
Надеюсь и в дальнейших уроках все будет так же понятно ))
Спасибо большое! Вы очень хорошо обьясняете! У Вас просто талант к этому!
Спасибо за ваши уроки! Все понятно
Замечательный урок! Спасибо).
Ну как сказать , ну как выразить свое блогодарность за токую проделанную работу. ОГРОМНОЕ ТЕБЕ СПАСИБО
Решение :
def increment_odometer(self, km):
if km >= 0:
self.odometer_reading += km
else:
print('Ошыбка')
*ошибка
@@mixfir8173 *это было в шутку
self.odometer_reading += abs(km)
Или же наоборот:
def increment_odometr(self, km):
if km < 0:
print(Грязный читер!)
else:
self.odometer_reading += km
Можно ведь просто использовать функцию модуля (abs()) на аргумент km.
Кратко. Доступно. Понятно. СПАСИБО. Подписался.
Спасибо, очень круто даете материал. Надеюсь у вас все хорошо.
Всё очень классно и понятно! Респект!
Как обычно выше всяких похвал:)
огромное спасибо вам за уроки, наконец, благодаря вам я понял суть классов. Читал книгу Мэтиза, но понял только после ваших уроков
На это и рассчитано, чтобы максимально ясно и доступно объяснить
Спасибо. Понял ооп благодаря вам.
Класс! Очень подробно и доходчиво. Теперь... я знаю кунг-фу )
Андрію,Ви такі фундаментальні речі вкладаєте як аксіому але нажаль новачкам більшість речей буде важко зрозуміти по факту відсутності первинних знань,вееееличезний песпект вам за вашу роботу,сподіваюся що Ви сприймаєте критику та вважаю що багато людей були б дуже вдячні за детальніший опис суті конструктиву мови програмування,Дякую
Боже, не могу поверить. Я наткнулась на ваше видео СЛУЧАЙНО, мне не хватало знаний по ООП, но теперь благодаря вашим видео я знаю python почти в совершенстве, спасибо большое, честно, спасибо :)))
Скорее всего Ваше "почти" все еще большого размера)
@@Alex-hh5oe да-да)
Прям как и я ))
Почему-то после того как вы объяснили мне все наконец-то дошло
Андрей спасибо за работу! Только не ленитесь повторять значение элементов в коде.. смотрят новички, и часто смотрят не полным циклом видеозаписей.. спасибо
Святой человек!
Очень хорошо обьясняешь
Спасибо.
@@andrievskii =)
def increment_odometer(self, km):
self.odometer_reading += abs(km)
Просто km взять в abs()
abs() - это метод который возвращает модуль числа. Если мы укажем -10 то abs() перепишет его в 10
Было бы неплохо если бы вы рассказали про метод super, а так-же про super().init() .У вас очень хорошо получается объяснять, не понимаю почему у вас так мало просмотров.
поддерживаю инициативу!))
было бы очень кстати)
Подскажите плиз можно ли из одного класса менять как то параметры другого- если да то как это правильно сделать
print(спасибо большое,очень хорошо объясняете!!!")
Пропустили открывающие кавычки, код выдаст ошибку))
Круто )
Ты лучший, тупо все понял))))) Покодил, сделал свое, просто бомба)
Мне приятно осознавать, что мои видео уроки приносят результат
Красава ждем django2 спасиба
Книга Эрика Метиза "Изучаем Python" Второе издание - оттуда все эти задачки...
У меня 90% задач и примеров с книг взяты!
@@andrievskii просто видос могут забанить, будь осторожнее
@@gx5037 это невозможно
Спасибо!
Как минимум за Д/З стоит поставить лайк
почему то выдаёт ошибку в 21 линии заполнил, как на экране my_car('audi', 'a4', 2017)
как понять эту ошибку?
TypeError: object.__init__() takes exactly one argument (the instance to initialize)
Вы видимо забыли дописать атрибут self
делаю всё тоже самое, но Python ругается на аргументы... VisualCode 2019. Не работает, и не пойму в чём дело.
попробуй установить нужные расширения, например базовое расширение питон, собственно для работы с питоном)
А зачем конкатенировать там где нет необходимости?
потому что могу
Парни почему не работает ?
if self.odometer_reading < 0:
print('This action is not allowed')
else:
self.odometer_reading += km
Андрей, спасибо большое за урок!
У меня вопрос.
Если эту конструкцию:
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('Не стоит с этим баловаться, дружище!')
Интерпретатор не выводит "ПОРА НА СЕРВИС" при соответствующем вызове.
С чем это связано? Похоже, что я где-то сильно поплыл...
Заранее, спасибо!
Кто-нибудь знает можно ли посчитать количество выполненных методов, допустим, сколько раз был выполнен какой-либо метод?
Конечно, создаешь глобальную переменную или список, если хочешь разные методы считать и в каждом методе при его вызове делаешь инкрементом плюс к значению из глобальной переменной. Вот тебе и счетчик
@@andrievskii спасибо, попробую
@@andrievskii Попробовал, не получается, возможно я что-то не то делаю, значение глобальной переменной остается всё равно равным 1, не увеличивается при повторном вызове метода, не понял до конца как сделать инкрементом плюс к значению из глобальной переменной
@@user-sx5vs5tn4c i += 1
Домашнее задание решается путём написания функции модуля (abs()) на аргумент km)))
Тогда же он будет увеличивать при добавлении отрицательного значения. Нам в данном случае просто нужно поставить фильтр. Если.. > 0.. иначе..
Надеюсь верно (задание со звездочкой):
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()
Не читал задание, но мне кажется можно обойтись без login2 просто подставив изначальные значение параметров имя и фамилия в конструкторе
хорошо, но последний обьект я бы сделал вот так:
def razloginitsya(self):
"""Метод чтобы разлогиниться"""
input("Нажмите чтобы разлогиниться!")
return print("Вы вышли из своего профиля")
abs(km)
ставьте скорость 1.5
я на 2 смотрю)
@@Alex-hh5oe а я - на 0.25
На х2 смотрю, и то медленно))
Если км > 0 до добавляем
Иначе можете сами придумать)
да кстати ты делаешь контаминацию слишком часто, даже там где можно обойтись и без неё
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()'''
Прохожу курс на скиллбоксе и там преподаватель на видео ооочень нудно и сумбурно объясняет про классы....очень нудно и трудно воспринимается. Этот роликсмотрю и всё сразу понятно и динамично объясняет, вообще супер!!
P.S. мне никто не смог объяснить почему пишется в __init__ self.a = a, self.b = b, а работаешь всё равно с self.a(b), из-за чего путанница происходит внутри - вот есть же краткое название переменной (вместо self.a писать просто a), а тут я понял сразу почему так пишется!
люди я не понимаю что такое self и __init__ напишите мне пж
посмотри предыдущий урок в этом плейлисте, там про них рассказывают)
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())
Автоматизирований
контент полностью скопирован с книги "Изучаем Python" даже примеры оттуда же
И?
@@andrievskii и указывать надо, что вы сделали видео по книге
@@maksymkravets2608 Пиши Навальному пусть разоблачение делает.
хочу АУДЮ РСКью7 в кОрбане
class User():
А зачем тут скобки?
Так принято при объявлении класса
@@andrievskii так принято, только когда нужно наследование, а тут его нет. Они тут явно лишние
Готов утонуть в вашей критике задание со звездочкой) Где и как лучше сделать?
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()