Khái niệm lớp, xuất hiện trong nhiều ngôn ngữ lập trình, là nền tảng cho lập trình hướng đối tượng và rất dễ hiểu. Lớp dùng để trừu tượng hóa các đặc điểm chung của các đối tượng khác nhau, phân loại các đối tượng giống nhau thành cùng một khái niệm theo nguyên tắc tương tự. Lớp đóng gói dữ liệu và hoạt động để sử dụng lại trong tương lai
Dưới đây là một ví dụ lớp python
class TestClass[Object]: def func_1[self]: ...... def func_2[self]: ......
2. mô-đun
Trong Python một. tệp py được coi là một mô-đun. Sau khi tệp tập lệnh được tạo, các hàm và biến nhất định được xác định. Bạn có thể sử dụng lại các hàm và biến này bằng cách nhập mô-đun vào các tệp khác yêu cầu các hàm hoặc biến này. Tên mô-đun là tên tệp trừ đi. hậu tố py
Các mô-đun cũng có thể được chia thành các mô-đun tích hợp sẵn và các mô-đun tùy chỉnh. Các mô-đun tích hợp được tích hợp vào Python, chẳng hạn như sys, os
và các mô-đun cơ bản khác. Hàm tích hợp dir[ module_name ]
cho phép bạn xem dữ liệu nào mô-đun xác định [bao gồm tên biến, tên mô-đun, tên hàm, v.v. ]. Hàm dir[]
sẽ trả về tất cả các tên hiện được xác định khi không có đối số
~$ python3 Python 3.7.1 [default, Dec 14 2018, 19:28:38] [GCC 7.3.0] :: Anaconda, Inc. on linux Type "help", "copyright", "credits" or "license" for more information. >>> dir[] ['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__'] >>> dir['django'] ['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
2. 1 Đường dẫn tìm kiếm mô-đun
Khi nhập một mô-đun, trình thông dịch sẽ tìm mô-đun trong gói hiện tại. Nếu không tìm thấy, nó sẽ tìm thấy nó trong mô-đun tích hợp. Nếu không tìm thấy cũng được thì tìm file module tương ứng [module_name. py] theo đường dẫn trong giá trị sys.path
3. Bưu kiện
Một gói là một cấu trúc thư mục tệp phân cấp. Nó định nghĩa một môi trường thực thi ứng dụng python bao gồm n mô-đun hoặc n gói con. Một gói là một thư mục chứa __init__. py, phải chứa __init__. py và các mô-đun hoặc gói con khác
Gói có thể nhập các gói khác bằng lệnh import
hoặc nhập một số mô-đun trong gói khác bằng lệnh from + import
import django.http from django.conf.urls import url
Tệp đầu tiên trong thư mục gói phải là __init__. py. Nếu cũng có __init__. py trong thư mục con thì nó là gói con của gói hiện tại
Một lớp có thể được khai báo trong shell tương tác hoặc mô-đun. Nếu một lớp được khai báo trong mô-đun, nó được coi là một thuộc tính của mô-đun. Điều này có nghĩa là tên lớp có thể được truy cập bằng mẫu sau
moduleName.ClassName
nơi đây
- moduleName – tên của mô-đun có lớp mà bạn muốn đưa vào mô-đun hiện tại;
- ClassName – имя класса в модуле moduleName .
Để phương thức này hoạt động, trước tiên bạn cần thực hiện lệnh nhập
import moduleName
Cách gọi lớp này cũng được dùng trong trường hợp kế thừa lớp này
Ví dụ. Hình 1 cho thấy cuộc gọi đến phương thức Show[] của Xin chào . Module1 from the code of Module2.
Hình 1. Tham chiếu đến lớp Xin chào từ một mô-đun khác
Sau khi chạy “Module2. py” , kết quả sau đây sẽ được hiển thị
Module1.Hello.Show
2. Tham chiếu đến một lớp từ một mô-đun khác. Phương pháp 2
Với phương pháp này, lớp của mô-đun khác có thể được truy cập mà không cần sử dụng tên mô-đun ở phía trước tên lớp [xem phương pháp trước]. Trong trường hợp này, bạn cần sử dụng kết hợp các lệnh from và import theo mẫu sau
from moduleName import ClassName
nơi đây
- moduleName là tên của mô-đun mà lớp ClassName được khai báo;
- ClassName là tên của lớp được khai báo trong mô-đun moduleName .
Sau kết nối này, bạn có thể tham khảo Tên Lớp mà không cần chỉ định tên mô-đun ở phía trước.
Ví dụ. Hình 2 cho thấy một ví dụ về cách truy cập lớp Triangle mà không sử dụng tên Module1.
Hình 2. Một cách để truy cập tên lớp bằng cách sử dụng kết hợp các chỉ thị từ nhập directives
3. Trường hợp class và module trùng tên
Đôi khi một mô-đun và một lớp trong đó có cùng tên. Sau đó, để truy cập tên lớp bằng phương pháp 1 [xem p. 1], bạn phải thêm tiền tố vào tên mô-đun
Nếu bạn không chỉ định tên mô-đun, một ngoại lệ sẽ được đưa ra. Một tên duy nhất được trình thông dịch hiểu là tên mô-đun, không phải tên lớp. Ví dụ sau giải thích điểm này
Ví dụ. Hình tròn. mô-đun py được xác định, thực hiện lớp Circle class
# Module circle.py # The class that defines the circle import math class Circle: # Initial initialization method def __init__[sl, x, y, r]: sl.x = x sl.y = y sl.r = r # Returns the area of a circle def Area[sl]: return math.pi*sl.r*sl.r
Sau đó, để sử dụng lớp Circle trong một mô-đun khác, bạn cần chỉ định tên mô-đun khi đề cập đến tên của nó.
________số 8_______Kết quả của chương trình
area = 78.53981633974483
Nếu trong dòng
obj = circle.Circle [2, 3, 5]
xóa tên của vòng kết nối mô-đun
obj = Circle [2, 3, 5]
sau đó một ngoại lệ sẽ được ném
4. Trường hợp các mô-đun có các lớp trùng tên
Nếu một lớp được khai báo trong một mô-đun bao gồm có tên trùng với tên của lớp của mô-đun hiện tại, thì quy tắc sau sẽ được áp dụng
- để truy cập vào lớp của mô-đun khác, đảm bảo đặt tên của mô-đun khác trước tên lớp. Trong trường hợp này, phương pháp sử dụng lệnh từ nhập không hoạt động. Chỉ có cách sử dụng lệnh nhập mới hiệu quả.
Ví dụ. Trong ví dụ này, các lớp có cùng tên được khai báo trong các mô-đun khác nhau. Đối với trường hợp như vậy, cách chính xác để sử dụng lớp của mô-đun khác được trình bày
Văn bản của module1. mô-đun py .
# A module named module1.py # The module declares a class named A class A: # Some class method def A[self]: print["Module1: A.A[]"]
Văn bản của module2. mô-đun py . Mô-đun này trình bày cách truy cập lớp A của mô-đun1. p .
import moduleName
0Nếu thay vì dòng
import moduleName
1bạn gõ
import moduleName
2sau đó trong dòng
import moduleName
3sẽ báo lỗi
import moduleName
4Sau khi khởi động chương trình sẽ cho kết quả như sau
import moduleName
55. Các quy ước chung để đặt tên cho các mô-đun và lớp
Khi viết các dự án lớn có chứa một số lượng lớn các mô-đun và lớp, việc xác định chính xác là rất quan trọng. Do đó, Python có một quy ước nhất quán cho tên lớp và mô-đun