Tôi khá mới với Python nói chung.
Tôi biết rằng tôi có thể tạo nhiều lớp trong cùng một tệp .py, nhưng tôi tự hỏi liệu tôi có nên tạo từng lớp trong tệp .py của riêng mình không.
Ví dụ, trong C#, tôi sẽ có một lớp xử lý tất cả các tương tác cơ sở dữ liệu. Sau đó, một lớp khác có quy tắc kinh doanh.
Đây có phải là trường hợp trong Python?
hỏi ngày 19 tháng 1 năm 2010 lúc 23:49Jan 19, 2010 at 23:49
Sergio Tapiasergio TapiaSergio Tapia
39K75 Huy hiệu vàng181 Huy hiệu bạc254 Huy hiệu đồng75 gold badges181 silver badges254 bronze badges
Không. Phong cách Python điển hình là đặt các lớp liên quan vào cùng một mô -đun. Nó có thể là một lớp kết thúc trong một mô -đun của riêng nó [đặc biệt nếu đó là một lớp lớn], nhưng nó không phải là một mục tiêu theo đúng nghĩa của nó. Và khi bạn làm, xin vui lòng không đặt tên cho mô -đun theo lớp - bạn sẽ kết thúc việc nhầm lẫn chính mình và những người khác về cái nào.
Đã trả lời ngày 19 tháng 1 năm 2010 lúc 23:51Jan 19, 2010 at 23:51
Thomas Woutersthomas WoutersThomas Wouters
127K23 Huy hiệu vàng146 Huy hiệu bạc122 Huy hiệu Đồng23 gold badges146 silver badges122 bronze badges
4
Mỗi tệp .py đại diện cho một mô -đun, vì vậy bạn nên giữ các nhóm chức năng, hằng số và các lớp logic cùng nhau trong cùng một tệp.
Mỗi lớp trong một tệp .py sẽ chỉ tạo ra Epic Bloat trong bảng mô -đun của bạn, vì nếu bạn chỉ quan tâm đến một lớp, bạn vẫn có thể
from whatever import SomeClass
Đã trả lời ngày 19 tháng 1 năm 2010 lúc 23:51Jan 19, 2010 at 23:51
3
Thomas Woutersthomas Wouters
127K23 Huy hiệu vàng146 Huy hiệu bạc122 Huy hiệu Đồng
- Mỗi tệp .py đại diện cho một mô -đun, vì vậy bạn nên giữ các nhóm chức năng, hằng số và các lớp logic cùng nhau trong cùng một tệp.
- Mỗi lớp trong một tệp .py sẽ chỉ tạo ra Epic Bloat trong bảng mô -đun của bạn, vì nếu bạn chỉ quan tâm đến một lớp, bạn vẫn có thể
- Tôi sẽ không đồng ý với những người khác và nói có. Đối với tôi, tôi đã có thành công tốt hơn khi đặt từng lớp vào tệp [mô -đun] của riêng mình. Nhưng có những trường hợp ngoại lệ vì vậy hãy để tôi giải thích với một ví dụ.
- Nếu bạn có một lớp foo, thì hãy đặt nó vào một tệp có tên foo.py, với các phần sau:
- Nhập khẩu
- Đây là nơi bạn kéo vào phụ thuộc.
- Ví dụ:
import math
,from Bar import *
- Quả cầu
- Đây là nơi bạn xác định giao diện bên ngoài cho mô -đun của bạn, tất cả các biểu tượng có thể nhìn thấy bên ngoài mô -đun này.
- Ví dụ:
__all__ = ['Foo']
- Đây cũng là nơi bạn có thể xác định các biến toàn cầu [xấu] và hằng số toàn cầu [tốt]. Những thế giới này không cần phải xuất khẩu; Chúng có thể được thực hiện toàn cầu chỉ để đơn giản hóa mã.
- Ví dụ:
- Ví dụ:
PI = 3.14159
có nghĩa là bạn có thể viếtPI
, trong khi nếu bạn xác định nó bên trong lớp foo thì bạn sẽ cần phải viếtFoo.PI
.- Chức năng
Đây là nơi bạn xác định tất cả các chức năng cấp cao nhất có liên quan đến lớp FOO, nhưng không thuộc về không gian tên FOO của lớp. Đây có lẽ là hiếm vì các lớp cho phép cả hai lớp @staticmethods
và bên trong.
Ví dụ: def print_foo[foo]: print[foo]
Các lớp họcJan 12, 2011 at 18:25
1
Ví dụ:
class foo[]:
print 'a bunch of time consuming work'
class tryme[]:
print 'try me'
0Đôi khi bạn sẽ muốn đặt nhiều hơn một lớp trong cùng một mô -đun. Bạn nên làm điều này bất cứ khi nào hai hoặc nhiều lớp liên quan về mặt khái niệm đến điểm mà bạn hầu như sẽ luôn sử dụng chúng cùng nhau và không bao giờ độc lập. Đây là ngoại lệ, không phải là tiêu chuẩn. Trong trường hợp này, thêm tất cả các tên lớp vào toàn cầu
class foo[]:
print 'a bunch of time consuming work'
class tryme[]:
print 'try me'
1.Jan 20, 2010 at 14:52
Cuối cùng, với mỗi mô -đun foo.py, cần có một mô -đun kiểm tra đơn vị tương ứng có tên là Testfoo.py.Bruno Oliveira
Đã trả lời ngày 12 tháng 1 năm 2011 lúc 18:254 gold badges42 silver badges39 bronze badges
1
Một điểm đáng tin khác là nếu một tệp phát triển quá lớn, bạn luôn có thể biến nó thành một gói, dễ dàng tổ chức lại mà không phá vỡ mã của máy khách.
Đã trả lời ngày 19 tháng 1 năm 2010 lúc 23:51Jan 19, 2010 at 23:51
Thomas Woutersthomas WoutersKenan Banks
127K23 Huy hiệu vàng146 Huy hiệu bạc122 Huy hiệu Đồng34 gold badges151 silver badges171 bronze badges
Mỗi tệp .py đại diện cho một mô -đun, vì vậy bạn nên giữ các nhóm chức năng, hằng số và các lớp logic cùng nhau trong cùng một tệp.
manyClass.py
class foo[]:
print 'a bunch of time consuming work'
class tryme[]:
print 'try me'
Mỗi lớp trong một tệp .py sẽ chỉ tạo ra Epic Bloat trong bảng mô -đun của bạn, vì nếu bạn chỉ quan tâm đến một lớp, bạn vẫn có thể
Tôi sẽ không đồng ý với những người khác và nói có. Đối với tôi, tôi đã có thành công tốt hơn khi đặt từng lớp vào tệp [mô -đun] của riêng mình. Nhưng có những trường hợp ngoại lệ vì vậy hãy để tôi giải thích với một ví dụ.
Nếu bạn có một lớp foo, thì hãy đặt nó vào một tệp có tên foo.py, với các phần sau:
try me
Nhập khẩuSep 3, 2015 at 22:02
Đây là nơi bạn kéo vào phụ thuộc.Jim Paul
Ví dụ: import math
, from Bar import *
1 silver badge4 bronze badges
1