Правильно ли я использую принципы ООП? Я понимаю как создать класс, создать методы. инициализировать класс ...
Но я не понимаю как правильно писать в стиле ООП. Большинство статей, которые я нашел, заканчиваются вызовом метода класса. Я написал авторизацию, скажите правильно ли я пишу в стиле ООП
Файл 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
245 +1
1
Ответы
1

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

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

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

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

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