Правильно ли я использую принципы ООП? Я понимаю как создать класс, создать методы. инициализировать класс ...
Но я не понимаю как правильно писать в стиле ООП. Большинство статей, которые я нашел, заканчиваются вызовом метода класса. Я написал авторизацию, скажите правильно ли я пишу в стиле ООП
Файл csv выглядит login,password.
Функция give_numdef give_num(message=''):
"""Give number"""
while True:
try:
num = int(input(message))
except Exception:
print('Надо ввести число!')
continue
break
return num
Файл main# !usr/bin/env python3
# Virtual Pet.
import signin
import need_func as nf
num_func = 0
welcome_message = (
f'Добрый день!\n'
f'Вы играете в игру My Pet\n'
f'Вам надо ухаживать за вашим домашним питомцем.\n'
f'Но для начало надо авторизоваться.\n'
f'Выберете нужное вам действие:\n\n'
f'1) Авторизоваться\n'
f'2) Регистрация\n'
f'3) Выйти\n'
)
while num_func != 3:
print(welcome_message)
num_func = nf.give_num('Введите число от 1 до 3: ')
if num_func == 1:
"""Sign in user."""
sign_in = signin.SignIn('users.csv')
logs = sign_in.sign_in()
if logs['status_code'] == 200:
LOGIN = logs['login']
elif logs['status_code'] == 400:
break
print(LOGIN)
nf.contin()
nf.clear()
elif num_func == 2:
pass
elif num_func == 3:
break
else:
print('У меня нет такой команды, введите число в диапазоне от 1 до 3')
Файл Work (родитель для авторизации и регистрации)# !usr/bin/env python
# Work with login and Password.
import csv
import need_func as nf
class Work(object):
"""Здесь будет документация"""
__users = {}
message_error = (
'1) Попробовать снова\n'
'2) Выйти\n'
)
def __init__(self, path):
self.path = path
with open(path, 'r') as f:
for i in csv.reader(f):
self.__users[i[0]] = i[1]
@staticmethod
def get_login():
"""В будущем будет документация"""
return input('Введите ваш логин: ')
@staticmethod
def get_password():
"""В будущем будет документация"""
return nf.give_text('Введите пароль: ')
@property
def users(self):
return self.__users
Сама авторизация# !usr/bin/env python
# Sign in users
import need_func as nf
from worked import Work
class SignIn(Work):
"""В будущем будет документация"""
def __init__(self, path):
super().__init__(path)
def __check_login(self):
"""В будущем будет документация"""
while True:
login = Work.get_login()
if login in self.users:
return {
'status_code': 200,
'login': login
}
else:
print('Такого логина не существует\n' + self.message_error)
num_func = nf.give_num('Надо ввести число от 1 до 2: ')
if num_func == 2:
return {
'status_code': 400,
'login': login
}
else:
continue
def __check_password(self, login):
"""В будущем будет документация"""
while True:
password = Work.get_password()
if self.users[login] == password:
return 200
else:
print('Извините, но пароль не подходит\n' + self.message_error)
num_func = nf.give_num('Надо ввести число от 1 до 2: ')
if num_func == 2:
return 400
else:
continue
def sign_in(self):
"""В будущем будет документация"""
logs = self.__check_login()
if logs['status_code'] != 200:
return logs
login = logs['login']
nf.clear()
status_password = self.__check_password(login)
if status_password == 200:
return {
'status_code': 200,
'login': login
}
else:
return {
'status_code': 400,
'login': login
}
Пишите любые замечания!

21 Авг 2019 в 06:58
183 +1
1
Ответы
1

Вы правильно используете принципы ООП в своем коде. Вы создаете классы, методы, инкапсулируете данные и функциональность. Ваш стиль написания кода можно назвать объектно-ориентированным.

Некоторые замечания и рекомендации:

Переименуйте класс "Work" в более информативное название, которое отражает его функциональность более точно.Хорошая практика использовать более информативные имена для переменных и методов. Например, методы "__check_login" и "__check_password" могут быть переименованы в более описательные.Добавьте документацию к методам и классам, чтобы было понятно, какой функционал они предоставляют.Проверяйте возвращаемые значения методов и делайте обработку ошибок по ситуации. Например, в случае неправильного ввода пароля, можно предложить пользователю попытаться ввести пароль еще раз.

В целом, ваш код выглядит хорошо структурированным и объектно-ориентированным. Продолжайте в том же духе и улучшайте свои навыки разработки в стиле ООП.

20 Апр в 13:10
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 83 829 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир