Как получить доступ / переопределить значения по умолчанию для атрибута родителя в SQL Alchemy? - PullRequest
0 голосов
/ 26 июня 2018

У меня есть следующие классы: Item, StoneSword, IronSword, Apple, Steak Item - родительский класс, а Мечи и еда наследуют класс Item. Я хочу иметь кучу разных функций и описаний для каждого из этих классов. Я полностью понимаю функциональную сторону вещей, но я пытаюсь выяснить, как переопределить описание по умолчанию дочерними классами.

В настоящее время я использую наследование одной таблицы с помощью SQLAlchemy.

1 Ответ

0 голосов
/ 02 июля 2018

Благодарю Майка Байера за помощь в выяснении, как переопределить __init__() в соответствии с моими потребностями. Если кто-нибудь найдет более элегантное решение, я буду рад принять этот ответ.

class User(Base):
    __tablename__ = 'users'

    id = Column(Integer, primary_key=True)
    name = Column(String, default="User")
    fullname = Column(String)
    email = Column(String)
    type = Column(String)

    __mapper_args__ = {
        'polymorphic_on': type,
        'polymorphic_identity': 'user'
    }

    def __init__(self, **kwargs):
        super().__init__(**kwargs)

    def __repr__(self):
        return f"<User(id={self.id}, name='{self.name}', fullname='{self.fullname}', email='{self.email}')>"

    def is_admin(self):
        print(f"I, {self.name}, am NOT an admin")


class Admin(User):
    def __init__(self, **kwargs):
        kwargs.setdefault("name", "Admin")
        super().__init__(**kwargs)

    __mapper_args__ = {
        'polymorphic_identity': 'admin'
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...