Answer the question
In order to leave comments, you need to log in
Am I using OOP principles correctly?
I understand how to create a class, create methods. initialize the class...
But I don't understand how to write OOP style correctly. Most of the articles I found end up calling a class method. I wrote authorization, tell me if I write correctly in the OOP style
. The csv file looks like login, password.
give_num function
def give_num(message=''):
"""Give number"""
while True:
try:
num = int(input(message))
except Exception:
print('Надо ввести число!')
continue
break
return num
# !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')
# !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
}
Answer the question
In order to leave comments, you need to log in
how to write in OOP style
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question