首页 > 解决方案 > 如何在类之间共享类方法?

问题描述

用于调试的方法依赖于一些类属性。所以在原始版本中,它们被编写为每个类中的私有类方法。代码重复。

class Network1(NetworkTemplate):
  def __init__(self, model_config)
    self.parameter = model_config

  def __debug_tool(self):
    # repeated code
    return self.parameter


class Network2(NetworkTemplate):
  def __init__(self, model_config)
    self.parameter = model_config

  def __debug_tool(self):
    # repeated code
    return self.parameter

我想知道如何重用重复的代码。

我想到了 import__debug_tool但它取决于一些类属性self.parameter。我不知道我是否应该手动将 6 个参数传递给导入的函数,因为它看起来很难看。

将它作为公共方法编写NetworkTemplate似乎是正确的做法,但我不确定它是否会影响正常性能(即在调试工具关闭或提交的情况下Network1)。

标签: pythonpython-3.x

解决方案


写成类__debug_tool的方法NetworkTemplate会通过继承提供给派生类Network1Network2类,不会影响性能。

这样做时,您不能使用以下划线开头的名称,因为这专门用于破坏名称(以防止它被派生类意外覆盖)并且您将无法访问它Network1Network2.

所以选择一个前导下划线(_debug_tooldebug_tool)的名称。

参见例如对象名称前的单下划线和双下划线是什么意思?更多细节。


推荐阅读