Có một vài phương pháp bạn có thể mất cho việc này. Như những người khác đã đề cập, bạn chỉ có thể sử dụng chức năng cấp mô-đun. Trong trường hợp này, chính mô đun là không gian tên chứa chúng lại với nhau. Một tùy chọn khác, có thể hữu ích nếu bạn cần theo dõi trạng thái, là định nghĩa một lớp với các phương thức bình thường (tự lấy), và sau đó xác định một cá thể chung duy nhất của nó và sao chép các phương thức cá thể của nó vào không gian tên mô-đun. Đây là phương pháp được thực hiện bởi mô-đun "ngẫu nhiên" của thư viện chuẩn - hãy xem lib/python2.5/random.py
trong thư mục python của bạn. Ở phía dưới, nó có một cái gì đó như thế này:
# Create one instance, seeded from current time, and export its methods
# as module-level functions. [...]
_inst = Random()
seed = _inst.seed
random = _inst.random
uniform = _inst.uniform
...
Hoặc bạn có thể đi tiếp cận cơ bản bạn mô tả (mặc dù tôi sẽ khuyên bạn sử dụng @staticmethod
hơn @classmethod
trong hầu hết các trường hợp).
Nguồn
2012-04-30 17:58:55
Hầu hết câu trả lời của bạn, ngoại lệ chính là câu thứ hai và câu cuối cùng, chỉ là đáng tranh cãi (và tôi có xu hướng không đồng ý) và bên cạnh vấn đề. Tôi muốn nói cắt tất cả các fluff về cách tuyệt vời các lớp học sẽ cải thiện nó, bạn nghĩ gì? – delnan
Tôi đều đồng ý và không đồng ý với câu trả lời này cùng một lúc. Vì vậy, tôi không thể quyết định có nên nhấn nút lên hay xuống. Dù sao tôi đồng ý về việc làm cho các đối tượng làm cho mã dễ đọc và duy trì. Tôi không đồng ý về việc sử dụng mẫu đơn/borg http://python-3-patterns-idioms-test.readthedocs.io/en/latest/Singleton.html. Nó không phải là một mô hình xấu; tuy nhiên, việc sử dụng các phương thức tĩnh với các biến lớp là cách dễ dàng hơn để duy trì và đọc trong một dự án mã cực kỳ phức tạp. Có điều này có thể không chính xác về mặt kỹ thuật nhưng các lập trình viên cấp cơ sở sẽ cảm ơn bạn. –