2010-05-19 32 views
18

Giống như Java (hoặc php), tôi sử dụng để phân tách các lớp thành các tệp.
Có phải cùng một thỏa thuận trong Python không? Ngoài ra, tôi nên đặt tên tệp như thế nào?
Chữ thường như classname.py hoặc giống như ClassName.py?
Tôi có cần phải làm điều gì đó đặc biệt nếu tôi muốn tạo một đối tượng từ lớp này hay thực tế là nó trong cùng một "dự án" (netbeans) làm cho nó ok để tạo ra một đối tượng từ nó?Có phải các lớp học bằng Python trong các tệp khác nhau không?

+2

Trùng lặp: http://stackoverflow.com/questions/106896/how-many-python-classes-should-i-put-in-one-file –

Trả lời

32

Trong Python, một tệp được gọi là module. Mô-đun có thể bao gồm nhiều lớp học hoặc chức năng.

Vì Python là không phải chỉ là ngôn ngữ OO, không có quy tắc nào có quy tắc cho biết, một tệp chỉ nên chứa một lớp.

Một tệp (mô-đun) phải chứa các lớp/chức năng thuộc về nhau, tức là cung cấp chức năng tương tự hoặc phụ thuộc vào nhau.
Tất nhiên bạn không nên phóng đại điều này. Khả năng đọc thực sự bị ảnh hưởng nếu module của bạn có quá nhiều lớp hoặc chức năng. Sau đó, có lẽ là thời gian để tập hợp lại chức năng thành các mô-đun khác nhau và tạo ra packages.


Đối với quy ước đặt tên, bạn có thể muốn đọc PEP 8 nhưng trong ngắn hạn:

lớp Names

Hầu như không có ngoại lệ, tên lớp sử dụng quy ước CapWords. Các lớp học sử dụng nội bộ có thêm một dấu gạch dưới.

Package và Module Tên

Modules cần phải có, tên toàn chữ thường ngắn. Dấu gạch dưới có thể được sử dụng trong tên mô-đun nếu nó cải thiện khả năng đọc. Các gói Python nên cũng có tên ngắn, tất cả chữ thường, mặc dù việc sử dụng dấu gạch dưới là không khuyến khích.

Vì tên mô-đun được ánh xạ tới tên tệp và một số hệ thống tệp là trường hợp không phân biệt chữ hoa và tên ngắn, điều quan trọng là mô-đun tên được chọn khá ngắn - đây không phải là vấn đề trên Unix , nhưng có thể là sự cố khi mã được chuyển sang máy Mac cũ hoặc Phiên bản Windows hoặc DOS.


Để tạo một đối tượng, bạn phải nhập các lớp trong file của bạn. E.g

>>> from mymodule import MyClass 
>>> obj = MyClass() 

hoặc

>>> import mymodule 
>>> obj = mymodule.MyClass() 

hoặc

>>> from mypackage.mymodule import MyClass 
>>> obj = MyClass() 

Bạn đang yêu cầu nội dung cơ bản cần thiết, vì vậy tôi khuyên bạn nên đọc tutorial.

+0

Ngoài ra để đặt tên xem PEP8 http: //www.python. org/dev/peps/pep-0008/ – Mark

+0

Ok, vì nó được gọi là một mô-đun, tôi có cần phải nhập nó không? và nếu vậy, giả sử tên tệp của tôi là site.py và tôi muốn sử dụng các lớp từ nó trong tệp khác của tôi blabla.py, tôi có viết một cái gì đó như nhập site.py? – Asaf

+1

@Asaf: Xem câu trả lời cập nhật của tôi. Làm thế nào bạn phải nhập khẩu phụ thuộc vào những thứ khác nhau. Nếu các mô-đun nằm trong cùng một gói, bạn chỉ có thể nhập mô-đun. Nếu không, bạn cũng phải nhập gói. ** Không bao giờ ** bao gồm hậu tố tệp (tức là '.py'). Đọc hướng dẫn và tìm kiếm ở đây về SO về cách nhập chính xác. Câu hỏi này đã được hỏi. –

1

Không, bạn có thể xác định nhiều lớp (và chức năng, v.v.) trong một tệp. Một tập tin cũng được gọi là một mô-đun.

Để sử dụng các lớp/chức năng được xác định trong mô-đun/tệp, bạn cần phải import mô-đun/tệp.

Các vấn đề liên quan