Как вы приведете экземпляр к производному классу?

Я пытаюсь использовать небольшое наследование в программе Python, над которой я работаю. У меня есть базовый класс User, который реализует все функциональные возможности пользователя. Я добавляю концепцию неутвержденного пользователя, которая похожа на пользователя, с добавлением единственного метода.

У класса User есть несколько методов, которые возвращают объект User. Это не будет работать, когда я создаю подкласс, так как в конечном итоге UnapprovedUser вернет User, что, помимо прочего, не позволит мне вызывать этот метод.

class User(object):
    base_dn = 'ou=Users,dc=example,dc=org'

    @classmethod
    def get(cls, uid):
        ldap_data = LdapUtil.get(uid + ',' + self.base_dn)
        return User._from_ldap(ldap_data)

class UnapprovedUser(User):
    base_dn = 'ou=UnapprovedUsers,dc=example,dc=org'

    def approve(self):
        new_dn = '' # the new DN
        LdapUtil.move(self.dn, new_dn)

get() а также_from_ldap() методы одинаковы для обоих классов, хотяget() метод в UnapprovedUser должен возвращать объект UnapprovedUser, а не пользователя.

Как я могу разыграть один из экземпляров пользователя, от которого я получаюUser.get() в UnapprovedUser?

Я хочу сделать что-то вроде:

class UnapprovedUser(User):
    # continued from before

    @classmethod
    def get(cls, uid):
        user = super(UnapprovedUser, cls).get(uid)
        return (UnapprovedUser) user # invalid syntax

так что я могу обернуть метод от родителя и просто привести возвращенное значение к правильному классу. Опять же, выполнение этого может привести к тому, что родитель использует их значение дляself.base_dn, который сломал бы все.

Ответы на вопрос(4)

Ваш ответ на вопрос