Tôi đang tạo một bộ nguyên tắc mã hóa python cho một nhóm gồm ~ 30 nhà phát triển. Làm cơ sở cho tài liệu của tôi, cho đến nay tôi đã nghiên cứu Google python style guide và PEP 8 style guide và kết hợp thông tin từ cả hai.Trong python, ưu điểm và nhược điểm của việc nhập một lớp so với nhập mô-đun của lớp là gì?
Một nơi hướng dẫn về phong cách của Google có nhiều hạn chế hơn PEP 8 là nhập. Hướng dẫn của Google yêu cầu các nhà phát triển chỉ nhập các gói và mô-đun và sau đó tham khảo các mục bên trong bằng một tên đủ điều kiện hơn. Ví dụ:
from pkg import module
...
my_class = module.MyClass()
Lý do là "nguồn của mỗi số nhận dạng được biểu thị một cách nhất quán". Đối với dự án của chúng tôi, chúng tôi dự định tổ chức với các gói hai hoặc ba cấp độ sâu, do đó, để biết nguồn đầy đủ của số nhận dạng, người đọc có thể sẽ cần phải kiểm tra lại câu lệnh nhập. Tôi muốn ủng hộ phong cách này nhập khẩu như là một "phong cách ưa thích":
from pkg.module import MyClass
...
my_class = MyClass()
IMHO, khả năng đọc trong cấu trúc python như comprehensions danh sách được cải thiện khi những cái tên ngắn gọn hơn.
Những gì tôi không rõ ràng là những gì trình thông dịch python có thể làm sau hậu trường. Ví dụ, bây giờ là MyClass một phần của không gian tên chung cho cả mô-đun này, và tất cả các nhà nhập khẩu của mô-đun này? (Điều này sẽ là xấu, có thể dẫn đến một số lỗi lạ, nếu điều này là đúng, tôi sẽ ủng hộ phong cách Google).
Trải nghiệm phát triển trăn của tôi bị giới hạn trong khoảng 6 tháng (và không có nhiều chuyên gia trong dự án của chúng tôi tham khảo ý kiến), vì vậy tôi muốn nhận thêm thông tin từ cộng đồng. Dưới đây là một số mặt hàng Tôi đã nghiên cứu đã:
effbot - discussion on imports
stack overflow - import vs. from import
python documentation - modules
Cảm ơn bạn đã trả lời của bạn!
* Mọi thứ * mà bạn có thể tham chiếu trực tiếp là toàn cầu trong mô-đun của bạn. 'MyClass' thực sự là một global trong ví dụ thứ hai của bạn, trong ví dụ đầu tiên,' module' là. –
Tôi làm 'nhập blah' và' vlah = blah.vlah'. Bởi vì toàn bộ mô-đun 'blah' sẽ được xử lý dù sao nếu tôi đã làm' từ blah import vlah' – thkang
Ngoài câu hỏi toàn cầu mà Martijn trả lời, bạn đang tìm kiếm cái gì đó khác. Nếu có, bạn có thể đặt câu hỏi rõ ràng hơn không? – msw