from abc import ABCMeta, abstractclassmethod class BaseModel: def _init(self, model, **params): for k, v in params.items(): pp = model.__dict__.get(k) if pp is not None: self.__dict__[k] = v def __init__(self, **params): self._row = None self._init(type(self), **params) _column = None offset_rows = 0 offset_cols = 0 @property def row(self): return self._row @row.setter def row(self, idx): self._row = idx @classmethod def get_column(cls): return cls._column @classmethod def get(cls): return "GET" @classmethod def get_by_id(cls, id): return "GET " + str(id) def create(self): self.Meta.database.create(self) def update(self): self.Meta.database.update(self) def delete(self): self.Meta.database.delete(self) class Meta: database = None class Field: def __init__(self, caption, column): self._caption = caption self._column = column @property def caption(self): return self._caption @property def column(self): return self._column def __repr__(self): return self._caption def __str__(self): return self._caption