Como você converte uma instância em uma classe derivada?

Eu estou tentando usar uma pequena herança em um programa em Python em que estou trabalhando. Eu tenho uma classe base, o usuário, que implementa toda a funcionalidade de um usuário. Eu estou adicionando o conceito de um usuário não aprovado, que é como um usuário, com a adição de um único método.

A classe User possui alguns métodos que retornam um objeto User. Isso não funcionará quando eu subclasse, pois acabarei tendo um UnapprovedUser retornando um Usuário, impedindo-me de chamar este método, entre outras coisas.

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)

oget() e_from_ldap() métodos são os mesmos para ambas as classes, embora oget() método em UnapprovedUser precisa retornar um objeto UnapprovedUser, não um usuário.

Como posso transmitir uma das instâncias do usuário que recebo deUser.get() em um UnapprovedUser?

Eu quero fazer algo como:

class UnapprovedUser(User):
    # continued from before

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

para que eu possa envolver o método do pai e simplesmente converter o valor retornado para a classe correta. Então, novamente, fazendo isso dessa maneira poderia levar o pai usando seu valor paraself.base_dn, que quebraria tudo.

questionAnswers(4)

yourAnswerToTheQuestion