在python程序中定义一些类外的函数有什么好处

pol*_*rld 6 python class function

为什么函数应该在Python中使用的类之外​​声明?

例如,在Github以下项目做到这一点与它的_hash,_task_from_taskline_tasklines_from_tasks功能.格式与以下内容相同:

class UnknownPrefix(Exception):
"""Raised when trying to use a prefix that does not match any tasks."""
def __init__(self, prefix):
    super(UnknownPrefix, self).__init__()
    self.prefix = prefix


def _hash(text):

    return hashlib.sha1(text).hexdigest()

def _task_from_taskline(taskline):
    """
    snipped out actual code
    """
    return task

def _tasklines_from_tasks(tasks):
    """Parse a list of tasks into tasklines suitable for writing."""


    return tasklines
Run Code Online (Sandbox Code Playgroud)

但我认为这些功能与班级有关系TaskDict.

为什么要把他们赶出课堂?在课堂外声明它们有什么好处?

And*_*ter 3

PyCon 的“停止编写类”演讲并不完全涉及这个主题,但包括我认为此处相关的课程:基本上,其想法是类是用于创建对象的。所有的属性、实例方法和类方法都应该进一步实现创建对象或使对象工作的目标。类不是用于代码组织(根据这个理论)——这就是模块的用途。

这是一个非常固执己见的策略,并不是每个人都同意。但是,如果您在这种情况下考虑您的示例,很明显,这些函数不是类的一部分的原因是,即使这些函数由类使用,它们实际上并不对任何对象进行操作或进一步创建直接任何对象。它们只是实用函数,不绑定到任何特定的类,理论上可以在库的其他地方使用。

那么为什么或者为什么不把它们放在课堂上呢?这归结为您是否认为应该使用类来组织代码。在这种情况下,作者显然接受了这样的想法:模块是用于代码组织的,而不是类。