Tại sao các hàm phải được khai báo bên ngoài lớp mà chúng được sử dụng trong Python?Lợi thế để xác định một số hàm trong lớp trong chương trình python
Ví dụ: following project on Github thực hiện điều này với các chức năng _hash
, _task_from_taskline
và _tasklines_from_tasks
. Định dạng giống như sau:
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
Nhưng tôi nghĩ các hàm này có liên quan với lớp TaskDict
.
Tại sao đưa chúng ra khỏi lớp học? Lợi thế của việc họ tuyên bố bên ngoài lớp học là gì?
Bật nó xung quanh: Điều gì sẽ lợi thế là đặt chúng trong lớp để thay thế? –
@MartijnPieters Encapsulation. –
@GeorgeStocker: điều gì sẽ xảy ra nếu các hàm không mang về trạng thái cá thể? –