在类主体中重命名方法

2 投票
1 回答
2134 浏览
提问于 2025-04-16 07:49

在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'。上面的用法显然是不对的……那要怎么做这个操作呢?

1 个回答

3

你不需要重命名它,只需要把它赋值给另一个变量就可以了:

class Validation(unittest.TestCase):

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

不过,有时候在继承的方法之间可能会出现一些奇怪的互动,所以这要看你具体想做什么。我也不太确定在旧式类中这个行为是怎样的……

补充:或者使用在运行时读取的名称:

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'))

撰写回答