【发布时间】:2013-05-16 14:33:11
【问题描述】:
为什么要在 Python 中使用的类之外声明函数?
例如,following project on 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
但我认为这些函数与TaskDict 类有关系。
为什么要把他们赶出课堂?在类外声明它们有什么好处?
【问题讨论】:
-
扭转局面:把它们放在课堂上会有什么好处?
-
@MartijnPieters 封装。
-
@GeorgeStocker:如果函数与实例状态无关怎么办?
-
@MartijnPieters 然后我会将它们放在另一个文件中,或者将它们放在有意义的地方。这是我的 C# 开发人员。对我来说奇怪的是看到函数无处可挂,很难确定它们处理的是系统的哪个部分。
-
@GeorgeStocker:对。但是 Python 更灵活一些。您经常会发现私有帮助函数捆绑在同一个模块中;那是它们被使用的地方,但它们不对类的状态进行操作,因此它们被定义为类之外的单独函数。这使课程本身保持整洁。