Câu trả lời:
Nó thành thật phụ thuộc vào nhu cầu của bạn. Hầu hết thời gian một mô-đun chức năng sẽ là những gì bạn đang tìm kiếm.
Các lớp Python (imho) không nên được nghĩ giống như các lớp trong C # hoặc C ++ hoặc Java, cần phải có một lý do hợp lý để nhóm một tập hợp các hàm thành một cha mẹ lớn hơn, các cấu trúc dữ liệu sẽ là một ví dụ tốt về điều này, bạn muốn một tập hợp các hàm áp dụng trực tiếp cho lớp thay vì một tập hợp các hàm được thu thập một cách lỏng lẻo là mục đích chung.
Một mô-đun dành cho nhóm phân cấp tổng thể của các hệ thống tương tự, tôi thường có tất cả các chức năng tiện ích trong một mô-đun duy nhất, tất cả dữ liệu dưới một mô-đun khác, lớp dữ liệu của tôi và các đầu nối theo mô-đun kiểu "cha mẹ" hơn. Vì một mô-đun chỉ là một nhóm tinh thần, nên nó ít hơn về các loại hệ thống trong đó (các lớp hoặc chức năng, có thể là sự kết hợp của cả hai) và nhiều hơn về các kết nối logic giữa các hệ thống trong mô-đun.
Câu hỏi cơ bản là nếu bạn cần có các phiên bản khác nhau của mô-đun / lớp. một mô-đun python giống như một singleton - bạn luôn luôn tham chiếu đến cùng một đối tượng, tức là nếu bạn cần phiên bản, bạn cần một lớp.
Tuy nhiên, nếu bạn không cần phiên bản, bạn vẫn có thể cần phải thiết lập "đối tượng" của mình về trạng thái ban đầu. trong khi điều này rõ ràng là có thể với một mô-đun đơn giản, nếu việc khởi tạo phức tạp hơn chỉ là thiết lập một số giá trị, tôi khuyên bạn nên có mã khởi tạo trong __init__
phương thức của lớp để dễ đọc.