python - 如何在类之间共享类方法?
问题描述
用于调试的方法依赖于一些类属性。所以在原始版本中,它们被编写为每个类中的私有类方法。代码重复。
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
)。
解决方案
写成类__debug_tool
的方法NetworkTemplate
会通过继承提供给派生类Network1
和Network2
类,不会影响性能。
这样做时,您不能使用以下划线开头的名称,因为这专门用于破坏名称(以防止它被派生类意外覆盖)并且您将无法访问它Network1
和Network2
.
所以选择一个前导下划线(_debug_tool
或debug_tool
)的名称。
参见例如对象名称前的单下划线和双下划线是什么意思?更多细节。
推荐阅读
- java - 在for循环中对一个字符串使用字符串替换方法
- amazon-web-services - amazon cloudfront 为来自 origin 的所有错误响应返回 404 错误
- android - Firebase 实时数据库 --- 嵌套的 singleValueEventListeners 是一种不好的做法吗?
- r - 有条件地向ggplot堆积条形图添加标签
- android - 如何在文本编辑器上处理 React Native 项目并同时在 Android Studio 中查看?
- javascript - 当使用 redux saga 和 react 时,状态如何被拉入 sagas.js
- python - tensorflow - 归一化向量
- javascript - 如果元素本身在另一个数组中,如何在特定索引处插入数组中的元素?
- reactjs - 如何将打字稿从无状态转换为有状态
- ios - 无法让程序识别 controller.h 文件