È un progetto OOP valido per Python?

0

Ho un design di classe che segue (non è esatto ma puoi farti un'idea):

WRITE_METHODS = ('POST', 'PATCH')

class CanPOST(BasePermission):
    def has_permission(self, request, view):
        return request.method == WRITE_METHODS[0]

class IsActor(BasePermission):
    def has_permission(self, request, view):
        return request.user.type == 'actor'

E voglio creare una classe figlio che abbia un comportamento da entrambi. Il mio approccio è:

class ActorCanPost(CanPOST, IsActor):
    def has_permission(self, request, view):

        return IsActor.has_permission(self, request, view) and /
              CanPost.has_permission(self, request, view)

Ci sono casi in cui voglio usare CanPOST e IsActor come autorizzazioni standalone.

Secondo la mia comprensione, se entrambe le classi genitore hanno lo stesso nome di metodo, La MRO di Python risolve il metodo del genitore più a sinistra. Ma nel mio caso Voglio utilizzare has_permission() da entrambi i genitori.

Dal momento che sto chiamando esplicitamente i metodi padre, l'ereditarietà non mi sta facendo molto bene qui. Ma poi, la mia classe bambino ha bisogno di un comportamento da entrambi i genitori. È un design valido? Come potrei migliorarlo, renderlo più significativo?

    
posta freerunner 08.05.2018 - 13:46
fonte

0 risposte

Leggi altre domande sui tag