【问题标题】:How do you decide which level a function should be at in python?你如何决定一个函数在python中应该处于哪个级别?
【发布时间】:2017-11-27 18:59:57
【问题描述】:

我有一个名为 file_parsers.py 的文件,它包含以下类:

class FileParser():

    def __init__(self, file_text):
        self.file_text = file_text

    def do_something(self):
        my_value = func_with_no_state()

我不确定在决定 func_with_no_state() 作为文件级函数应该在类内还是类外时要问什么问题?

另外,当这个函数在文件级或类内部时,它更容易存根吗?

【问题讨论】:

  • func_with_no_state 是什么意思,它有什么作用?你想达到什么目的?
  • do_something() 和 func_with_no_state() 是非常通用的名称。他们是做什么的?
  • 这更像是一个 OOP 或设计问题。它与 Python 没有特别的关系。一个非常粗略的答案是,如果您的函数与类相关和/或使用跨类方法共享的变量,则使用类。如果您的函数独立工作并且不使用类变量,则将其保留在外部。
  • @AmitTripathi 一个警告是,也许您可​​能想要一个没有绑定状态的函数,但您仍然想要继承。虽然,我很少发现这是必要的。通常,我在一个模块中混合了类定义和独立函数。
  • 是的,对于与类无关但出于可读性、继承性等原因仍需要在类中的方法,我们可以使用@staticmethod语法糖:)

标签: python


【解决方案1】:

那么...还有其他班级使用func_with_no_state 吗?如果没有,它应该隐藏在FileParser 中。如果其他东西确实使用它,那么你有一个更大的问题。如果OtherClass 经常使用func_with_no_state(与FileParser 相当),那么最好将func_with_no_state 保留在外面,以便两个类都可以使用它。但是如果FileParser 是目前为止的主要用户,那么OtherClass 可以从FileParser 的定义中提取函数。

【讨论】:

    猜你喜欢
    • 2015-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-01
    相关资源
    最近更新 更多