Hola a todos.
Estoy intentando decorar el método de una clase. El decorador en cuestión tiene un parámetro.
Dentro de la clase intento decorar la función A() con este decorador (pasándole como parámetro 'self'), pero al llamar al método A() me da error:
" NameError: name 'self' is not defined "
¿Qué hago mal?
Gracias
¿Puedes poner el código?
Saludos!
Cita de: 11Sep en 28 Febrero 2014, 23:48 PM
¿Puedes poner el código?
Saludos!
Quizás porque estás haciendo referencia a un objeto que no está instanciado... i think...
Si subís el código sería de gran de ayuda.
Subo el código, está en dos ficheros separados:
Fichero 1 (decoradores):
'''
Created on 26 Feb 2014
@author: dan
'''
from time import time
#Decora la función para sacar por pantalla el id del
#hilo que se está ejecutando
def printThreadName(_self):
def _thread_i_am(function):
def tim(*args,**kwargs):
r = function(args,kwargs)
print("I am ",_self.getName()," thread")
return r
return tim
return _thread_i_am
FIchero 2 (clase que usa los decoradores)
import threading
from Decorators import printThreadName
class FileThread(threading.Thread):
def __init__(self,_filePath):
threading.Thread.__init__(self)
self.larger_line=None;
self.filePath=_filePath
#Devuelve la línea mas larga de un fichero
def __largerLine(self):
...
...
def getLargerLine(self):
return self.larger_line
@printThreadName(self)
def run(self):
self.largerLine();
Saludos y gracias de antemano.