LINUX.ORG.RU

История изменений

Исправление scientistpython, (текущая версия) :

Согласен и понимаю это. Но, проблема с синтаксисом или архитектурой. Как сделать не знаю.

Есть Data Transfer Objects у меня, например, А и В:

@dataclass
class Base:
    pass

@dataclass
class A(Base):
    x: int

@dataclass
class B(Base):
    y: str

и мне нужно их записывать в базы данных

def save_to_db(c):
    if c.__class__.__name__ == 'A':
         # save A.x
    if c.__class__.__name__ == 'B':
         # save B.y
Причем функции save_to_db лежат в разных отдельных модулях, заточенные под свою СУБД. И эти модули будут дополняться и меняться - т.е. в не самый лучший вариат в приведенной выше иерархии класса предусматривать работы со всевозможными БД, к-е есть и будут.

P.S. похоже придется save_a_to_db, save_b_to_db ...

Исходная версия scientistpython, :

Согласен и понимаю это. Но, проблема с синтаксисом или архитектурой. Как сделать не знаю.

Есть Data Transfer Objects у меня, например, А и В:

@dataclass
class Base:
    pass

@dataclass
class A(Base):
    x: int

@dataclass
class B(Base):
    y: str

и мне нужно их записывать в базы данных

def save_to_db(c):
    if c.__class__.__name__ == 'A':
         # save A.x
    if c.__class__.__name__ == 'B':
         # save B.y
Причем функции save_to_db лежат в разных отдельных модулях, заточенные под свою СУБД. И эти модули будут дополняться и меняться - т.е. в не самый лучший вариат в приведенной выше иерархии класса предусматривать работы со всевозможными БД, к-е есть и будут.