2010-11-30 3 views
2

Est-il possible de renommer la méthode en Python? Quelque chose comme çaRenommer la méthode dans le corps de la classe

class Validation(unittest.TestCase): 

    def __init__(self, methodName='runTest'): 
     super(Validation, self).__init__(methodName) 
     #Doesn't work 
     setattr(self,'do_folders_equal','test_do_folders_equal') 

méthode Renommer 'de do_folders_equal' à 'test_do_folders_equal' .. utilisation ci-dessus, évidemment, est incorrect ... Comment faire ce hack?

+3

Ceci est une idée horrible. Pourquoi vous voulez ceci? –

+0

C'était le seul moyen dans ma situation ... A cause de cela ne semble pas possible J'ai codé en dur tous les cas probables dans la classe –

Répondre

3

Vous ne le renommer, vous voulez simplement l'attribuer à une autre variable:

class Validation(unittest.TestCase):

def __init__(self, methodName='runTest'): 
    super(Validation, self).__init__(methodName) 
    self.test_do_folders_equal = self.do_folders_equal 

Cependant, il peut parfois être une interaction bizarre avec les méthodes héritées etc, donc cela dépend sorte de ce que vous essayons de faire. Je ne sais pas comment cela se comporte sur les classes de style ancien, soit ...

EDIT: Ou en utilisant un nom lu lors de l'exécution:

class Validation(unittest.TestCase):

def __init__(self, methodName='runTest'): 
    super(Validation, self).__init__(methodName) 
    setattr(self, 'test_do_folders_equal', getattr(self, 'do_folders_equal')) 

+0

Non, ce n'est pas exactement ce que je voulais. Je récupère la chaîne 'test_do_folders_equal' à l'exécution –

+0

Ok édité pour ajouter setattr et getattr, ainsi vous pouvez utiliser les noms de chaînes. –

Questions connexes