2010-12-03 12 views
29

Al igual que dice el título, ¿los métodos anulados heredan los decoradores?¿Los métodos anulados heredan los decoradores en python?

class A: 
    @memoized 
    def fun(self, arg): 
     return None 


class B(A): 
    def fun(self, arg): 
     #computations 
     return something 

lo mismo que B.fun() maintain the decorator?

+5

Cuando probado, ¿Qué observó? –

+1

-1 Podrías haberlo descubierto más rápido que hacer una pregunta aquí, sin mencionar esperar una respuesta. – martineau

+12

Tengo que estar en desacuerdo con que esto es algo que merece un voto negativo por no haber intentado primero. Es una pregunta definitiva con una respuesta inequívoca. El uso de decoradores en métodos heredados es completamente válido si no entiende cómo escribir decoradores usted mismo. – Falmarri

Respuesta

16

pensar de esta manera

class A(object): 
    def fun(self, arg): 
     return None 
    fun = memoized(fun) 
4

No. Es una función completamente diferente. Pero puedes intentarlo por ti mismo con un decorador simulado.

Cuestiones relacionadas