Как правильно наследовать и соединить классы? Ребят, не могу разобраться. У меня есть три класса. 1) User (методы: создание, обновление, удаление) в mysql для пользователей отдельная таблица. 2) Organisation (методы: создание, обновление, удаление) в mysql для организаций тоже отдельная таблица. 3) Invoice (счета) (методы: создание, обновление, удаление) в mysql для счетов отдельная таблица, но содержит id_user и id_org. Получается, что у меня третий класс Invoice грохнется, если я переименую какой-то столбец в таблицах пользователи или организации. Я неправильно выделил сущности, или в чем причина?
Для решения вашей проблемы, вам следует использовать наследование и соединение классов посредством ассоциации или композиции.
1) User и Organisation могут быть унаследованы от базового класса, например, Person, который будет содержать методы создания, обновления и удаления. 2) Invoice может содержать ссылки на объекты User и Organisation, а не прямые id_user и id_org, чтобы избежать проблемы при переименовании столбцов. 3) Таким образом, каждый класс будет независимым и изменения в одном из них не повлияют на другие.
Примерно так выглядеть структура классов:
class Person: def create(self): pass def update(self): pass def delete(self): pass class User(Person): # дополнительные методы для работы с пользователями class Organisation(Person): # дополнительные методы для работы с организациями class Invoice: def __init__(self, user, organisation): self.user = user self.organisation = organisation def create(self): pass def update(self): pass def delete(self): pass
Таким образом, у вас будет структура классов, которая позволит вам без проблем вносить изменения в базовые таблицы пользователей и организаций, не влияя на функционал класса Invoice.
Для решения вашей проблемы, вам следует использовать наследование и соединение классов посредством ассоциации или композиции.
1) User и Organisation могут быть унаследованы от базового класса, например, Person, который будет содержать методы создания, обновления и удаления.
2) Invoice может содержать ссылки на объекты User и Organisation, а не прямые id_user и id_org, чтобы избежать проблемы при переименовании столбцов.
3) Таким образом, каждый класс будет независимым и изменения в одном из них не повлияют на другие.
Примерно так выглядеть структура классов:
class Person:def create(self):
pass
def update(self):
pass
def delete(self):
pass
class User(Person):
# дополнительные методы для работы с пользователями
class Organisation(Person):
# дополнительные методы для работы с организациями
class Invoice:
def __init__(self, user, organisation):
self.user = user
self.organisation = organisation
def create(self):
pass
def update(self):
pass
def delete(self):
pass
Таким образом, у вас будет структура классов, которая позволит вам без проблем вносить изменения в базовые таблицы пользователей и организаций, не влияя на функционал класса Invoice.