Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 7, 2018 18:15:39

Meller
Зарегистрирован: 2018-10-12
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Подскажите правильно ли я составляю классы.

Здравствуйте. Вопрос неопытного человека. Не пинайте сильно.
Подскажите правильно ли я понимаю как мне составить класс.
Допустим у меня есть класс работника, Все данные берутся с БД и туда же сохраняются.
У работника очень много данных(в примере только четверть)

Как я это вижу.

 class Worker:
    """"Класс работника"""
    def __init__(self, _id=None):
        self.id = None
        self.first_name = None
        self.last_name = None
        self.middle_name = None
        self.sex = None
        self.date_Birth = None
        self.phone = None
        self.address = None
        self.birthplace = None
        self.note = None
        # ... и так далее
        
        if _id:
            self.get_sql_info()
        
    def get_sql_info(self):
        # тут запрос к базе данных и получение значений 
        self.id = sql_result[0]
        self.first_name = sql_result[1]
        self.last_name = sql_result[2]
        self.middle_name = sql_result[3]
        self.sex = sql_result[4]
        self.date_Birth = sql_result[5]
        self.phone = sql_result[6]
        self.address = sql_result[7]
        self.birthplace = sql_result[8]
        self.note = sql_result[9]
        # ... и так далее
        
    def save_sql_info(self):
        # Тут происходит сохранение информации в базу
    # ... Дальнейшие методы

Но у меня есть предчувствие что так никто не делает.

Офлайн

#2 Ноя. 7, 2018 19:12:15

Papa_Svin
Зарегистрирован: 2018-09-17
Сообщения: 138
Репутация: +  1  -
Профиль   Отправить e-mail  

Подскажите правильно ли я составляю классы.

То, что вы пытаетесь изобрести, изобретено сто лет назад и называется ORM, реализаций есть куча.
А концептуально… Ну вот лично вас не бесит функция, которая называется get_lalala, но при этом она ничего не возвращает?

Офлайн

#3 Ноя. 7, 2018 19:30:47

Meller
Зарегистрирован: 2018-10-12
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Подскажите правильно ли я составляю классы.

Про ORM знаю. Просто я сейчас хочу разобраться.
Про названия согласен) звучит тупо.
Но сама реализация правильная?

Офлайн

#4 Ноя. 7, 2018 19:54:14

Papa_Svin
Зарегистрирован: 2018-09-17
Сообщения: 138
Репутация: +  1  -
Профиль   Отправить e-mail  

Подскажите правильно ли я составляю классы.

Так вы же ничего еще не реализовали, вот прям вообще ничего. Что мы должны обсуждать, присваивание переменных?

Офлайн

#5 Ноя. 8, 2018 00:13:49

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10022
Репутация: +  857  -
Профиль   Отправить e-mail  

Подскажите правильно ли я составляю классы.

Meller
Но сама реализация правильная?
Надо сделать структуру рабочего, в которой хранятся только данные. А чтение и запись из базы и в базу должны быть в другом исполнителе, который при чтении из базы возвращает заполненного рабочего (читает данные, создаёт рабочего, заполняет его данными и возвращает его), а при сохранении в базу принимает рабочего.



Офлайн

#6 Ноя. 8, 2018 11:15:43

Meller
Зарегистрирован: 2018-10-12
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Подскажите правильно ли я составляю классы.

py.user.next
Надо сделать структуру рабочего, в которой хранятся только данные. А чтение и запись из базы и в базу должны быть в другом исполнителе, который при чтении из базы возвращает заполненного рабочего (читает данные, создаёт рабочего, заполняет его данными и возвращает его), а при сохранении в базу принимает рабочего.
Вроде я вас понял, тогда класс будет выглядеть примерно так ?
  class Worker:
    """"Класс работника"""
    def __init__(self, _id, first_name, last_name, middle_name, sex, date_Birth,... ):
        self.id = _id
        self.first_name = first_name 
        self.last_name = last_name 
        self.middle_name = middle_name 
        self.sex = sex 
        self.date_Birth = date_Birth 
        # ... и так далее

Получается к этому классу нужно дописать отдельный класс для получения готового заполненного экземпляра работника из базы данных и для записи?

Отредактировано Meller (Ноя. 8, 2018 11:18:05)

Офлайн

#7 Ноя. 8, 2018 16:04:40

Papa_Svin
Зарегистрирован: 2018-09-17
Сообщения: 138
Репутация: +  1  -
Профиль   Отправить e-mail  

Подскажите правильно ли я составляю классы.

Meller
А чем ваш класс лучше простого словаря? Что он даёт?

Офлайн

#8 Ноя. 8, 2018 16:26:46

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10022
Репутация: +  857  -
Профиль   Отправить e-mail  

Подскажите правильно ли я составляю классы.

Meller
Получается к этому классу нужно дописать отдельный класс для получения готового заполненного экземпляра работника из базы данных и для записи?
В этом классе можешь писать только операции для этого типа. Например, сравнить двух работников, вычислить коэффициент работника и тому подобное, строковое представление для вывода на экран. Откуда он берётся и куда он сохраняется, он знать не должен. А дальше ты строишь машину, которая работает с работниками, которая и умеет сохранять их и загружать, и таких машин может быть много.



Офлайн

#9 Ноя. 8, 2018 16:58:53

Meller
Зарегистрирован: 2018-10-12
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Подскажите правильно ли я составляю классы.

Papa_Svin
MellerА чем ваш класс лучше простого словаря? Что он даёт?
Да это только начало класса, понятно что дальше будет куча методов.

py.user.next
В этом классе можешь писать только операции для этого типа. Например, сравнить двух работников, вычислить коэффициент работника и тому подобное, строковое представление для вывода на экран. Откуда он берётся и куда он сохраняется, он знать не должен. А дальше ты строишь машину, которая работает с работниками, которая и умеет сохранять их и загружать, и таких машин может быть много.

Вас понял. Спасибо! Пойду думать над машиной по загрузке из базы!

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version