Python 类主体中的重命名方法

Python 类主体中的重命名方法,python,Python,可以在Python中重命名方法吗? 像这样的 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') 将方

可以在Python中重命名方法吗? 像这样的

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')
将方法“do_folders_equal”重命名为“test_do_folders_equal”。。
显然,上面的用法是不正确的……如何进行此攻击?

您不会重命名它,只需将其分配给另一个变量:


类验证(unittest.TestCase):

然而,有时可能会有一些奇怪的相互作用与继承的方法等,所以这在某种程度上取决于你试图做什么。也不确定这在旧式类上的行为

编辑:或使用运行时读取的名称:


类验证(unittest.TestCase):


这是个可怕的主意。你为什么想要这个?在我的情况下,这是唯一的一种方法…因为这似乎不可能,我把所有可能的案例都硬编码在classNo中,这不完全是我想要的。我在运行时检索字符串“test\u do\u folders\u equal”OK编辑以添加setattr和getattr,因此您可以使用字符串名称。
def __init__(self, methodName='runTest'):
    super(Validation, self).__init__(methodName)
    self.test_do_folders_equal = self.do_folders_equal
def __init__(self, methodName='runTest'):
    super(Validation, self).__init__(methodName)
    setattr(self, 'test_do_folders_equal', getattr(self, 'do_folders_equal'))