如何覆盖python库的功能?

时间:2016-05-31 18:54:58

标签: python python-2.7

我正在使用python库,我需要覆盖其中一个函数。我们称之为     module.py

def dump(nodes, args = 'bleh' ):
  ...validation checks
  for node in nodes:
    print(node, someother_args)

def print_node(node, someother_args):
  ...prints in some way i don't want

现在,我正在使用这个dump方法,我想用自己的print_node方法覆盖print_node函数,因为我想以不同的方式打印它。最好的方法是什么?

1 个答案:

答案 0 :(得分:1)

您可以自己创建一个继承自目标模块的类,并以您想要的任何方式覆盖该函数。然后,您可以使用您的对象而不是module.py

class my_class(module):
    def __init__(self, *args, **kwargs):
        super(my_class, self).__init__(*args, **kwargs)
    def dump(self):
        # do stuff

正如您在评论中提到的,如果您的模块包含许多函数,则最好在当前模块中定义新函数。然后,您可以将其分配给该函数名称。

正如@Joran Beasley所提到的,你可以做类似下面的事情

import my_file
my_file.dump = my_local_dump_fn