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.
为什么要把他们赶出课堂?在课堂外声明它们有什么好处?
PyCon 的“停止编写类”演讲并不完全涉及这个主题,但包括我认为此处相关的课程:基本上,其想法是类是用于创建对象的。所有的属性、实例方法和类方法都应该进一步实现创建对象或使对象工作的目标。类不是用于代码组织(根据这个理论)——这就是模块的用途。
这是一个非常固执己见的策略,并不是每个人都同意。但是,如果您在这种情况下考虑您的示例,很明显,这些函数不是类的一部分的原因是,即使这些函数由类使用,它们实际上并不对任何对象进行操作或进一步创建直接任何对象。它们只是实用函数,不绑定到任何特定的类,理论上可以在库的其他地方使用。
那么为什么或者为什么不把它们放在课堂上呢?这归结为您是否认为应该使用类来组织代码。在这种情况下,作者显然接受了这样的想法:模块是用于代码组织的,而不是类。