python - 如何覆盖 python 库的函数?

标签 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 函数,因为我想打印它以不同的方式。最好的方法是什么?

最佳答案

您可以自己创建一个继承自预期模块的类,并以任何您想要的方式覆盖该函数。然后你可以使用你的对象而不是 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

关于python - 如何覆盖 python 库的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37553545/

相关文章:

python - 在 Openpyxl Python 中将列格式设置为百分比

javascript - 如何使用 selenium 在 python 中执行 Javascript 函数

python - django 'auto_now' 如何忽略指定字段的更新

python - 基于min函数的比较

python - 在 SLES 11 上安装 Python 2.7

python - 迭代包含字典中的键的列。从第二个字典返回匹配的键,保持第一个字典中键的顺序

python - 用 Pandas 计算一些分组数据的出现次数

Python + GTK - 如何抑制警告

Python 到 exe : py2exe issues with pkg_resources

windows - 是否有一个可以与 GUI 交互的自动 'mouse clicking' 库?