Python xác định phương thức lớp trong tệp riêng biệt

Trong bài viết này, chúng ta sẽ hiểu nhu cầu lập trình mô-đun và sau đó sẽ tìm hiểu cách Nhập các lớp từ một tệp khác bằng ngôn ngữ lập trình python. Chúng ta sẽ thảo luận một số ví dụ để hiểu chúng rõ ràng hơn. Chúng tôi cũng sẽ hiểu các thư viện được xác định trước giúp chúng tôi như thế nào. Vậy hãy bắt đầu

nội dung

  • Tại sao nó cần thiết?
  • Lập trình hướng đối tượng hoặc OOP
  • Lập trình mô-đun
    • Lợi thế của việc sử dụng Lập trình mô-đun
  • Giới thiệu về Báo cáo nhập khẩu
  • Nhập các lớp từ một tệp khác
  • Nhập tất cả các lớp từ tệp khác
  • Nhập các lớp từ một thư mục khác
  • Nhập các lớp từ các thư viện được xác định trước
  • câu hỏi thường gặp
  • Sự kết luận
  • Xu hướng bài viết Python

Tại sao nó cần thiết?

Vì vậy, câu hỏi đầu tiên xuất hiện trong đầu chúng ta là tại sao chúng ta cần nhập bất kỳ tệp hoặc lớp nào từ một tệp khác?

Đầu tiên, hiểu tại sao nó cần thiết? . Viết mã cho chúng mọi lúc là một công việc khá tẻ nhạt. Để tránh những tình huống như vậy, chúng tôi sử dụng khái niệm Lập trình hướng đối tượng hay còn gọi là OOP

Lập trình hướng đối tượng hoặc OOP

OOP là một khái niệm lập trình trong đó chúng ta tạo các đối tượng dựa trên một số lớp đã xác định có một số thuộc tính (được gọi là thuộc tính) và hàm (được gọi là phương thức). Ưu điểm của việc đó là chúng ta có thể tái sử dụng nó nhiều lần nếu muốn. Chúng tôi cũng có thể thực hiện các thực thể thời gian thực khác như thừa kế ( i. e. kế thừa các thuộc tính từ các lớp khác), trừu tượng hóa ( i. e. che giấu thông tin), đa hình (i. e. hiện diện dưới nhiều hình thức) e. t. c. trong đó. Bản thân nó là một khái niệm độc lập, vì vậy chúng ta sẽ nói về nó sau. Bây giờ, hãy tiếp tục và nói về lập trình mô-đun

Lập trình mô-đun

Mặc dù, OOP là một cách lập trình hiệu quả và thông minh, nhưng chúng ta không thể nói rằng nó tự giải quyết tất cả các vấn đề. Bên cạnh khái niệm cốt lõi về OOP, có một số vấn đề khác mà chúng ta gặp phải khi lập trình. Làm việc trên các kịch bản thực tế rất khác với kịch bản mà chúng ta học. Trong thực tế, giải quyết bất kỳ vấn đề nào có thể yêu cầu hàng nghìn dòng mã có thể có hàng trăm chức năng và hàng chục lớp. Duy trì tất cả các hàm và lớp đó trong một chương trình là một nhiệm vụ khó khăn. Vì vậy, chúng tôi sử dụng phương pháp lập trình mô-đun để đối phó với những tình huống như vậy

Lập trình mô-đun là một cách tiếp cận lập trình trong đó thay vì viết mã cho một vấn đề lớn, chúng tôi chia nó thành nhiều vấn đề nhỏ độc lập. Khi chúng tôi giải quyết từng vấn đề, chúng tôi sẽ hợp nhất chúng để đạt được mục tiêu chính của chúng tôi

Lợi thế của việc sử dụng Lập trình mô-đun

Ưu điểm của việc làm theo phương pháp này là chúng ta có thể tăng khả năng đọc mã. Chúng ta có thể tái sử dụng nó nhiều lần. Hơn nữa, chúng tôi dễ dàng bảo trì chúng và thay đổi chúng theo cách sử dụng của chúng tôi. Hơn nữa, nó giúp chúng tôi rất nhiều trong khi gỡ lỗi chương trình vì chúng tôi không phải mò mẫm nhiều trong một tệp.

Giới thiệu về Báo cáo nhập khẩu

Khi tất cả các vấn đề độc lập được giải quyết, câu hỏi đặt ra là làm thế nào chúng ta có thể liên kết chúng. Ở đây, câu lệnh Python Import xuất hiện.

Câu lệnh nhập giúp nhập mã từ các tệp khác hoặc mô-đun vào tệp chúng tôi đang làm việc. Bạn có thể coi nó như một cầu nối cho phép chúng ta truy cập vào các thuộc tính hoặc phương thức của lớp từ các tệp khác để chúng ta có thể sử dụng chúng. Tuy nhiên, có một cú pháp thích hợp để làm theo để làm điều đó mà chúng ta sẽ thấy trong vài giây nữa. Trước đó, trước tiên hãy hiểu cấu trúc thư mục đã cho.


application
  |
  |---- module1
  |       |------- __init__.py
  |       |------- file1.py
  |       |------- file2.py
  |
  |---- module2
          |------- file3.py
          

Vì vậy, trong cấu trúc thư mục đã cho, chúng ta có một thư mục ứng dụng chứa hai thư mục có tên module1 và module2. Trong mỗi thư mục, chúng tôi có các tệp có tên lần lượt là tệp1, tệp2 và tệp3. Bây giờ, chúng ta sẽ thảo luận về các kịch bản khác nhau của việc nhập các lớp hoặc tệp từng cái một. Nào,

Nhập các lớp từ một tệp khác

Trong ví dụ này, đầu tiên, chúng ta sẽ định nghĩa một lớp trong file1. py và sau đó nhập nó vào file2. py

application/module1/file1.py

class ArithmeticOperations:

    def __init__(self):
        self.sum_ = 0
    
    def get_sum(self,num1,num2):
        self.sum_ = num1+num2
        return self.sum_

application/module1/file2.py

import file1

obj = file1.ArithmeticOperations()
c = obj.get_sum(3,8)
print(c)

Output: 
11

Trong ví dụ trên, chúng tôi đã nhập tệp1 bằng cách sử dụng câu lệnh "nhập". Sau đó, chúng ta tạo một thể hiện của lớp mà chúng ta muốn sử dụng. e. ArithmeticOperations bằng cách tham khảo nó. Chúng ta có thể hiểu nó là;

  • Chúng tôi đã nhập tệp có tên tệp1
  • Sau đó, chúng tôi giới thiệu lớp đó bằng file1. ArithmeticOperations() và gán nó cho biến obj
  • Sau đó, chúng ta gọi hàm get_sum bằng cách sử dụng đối tượng ‘obj’
  • Và, sau đó in kết quả được gán trong biến 'c'

We can also do it using “from import ” statement. Take a look to it;

from file1 import ArithmeticOperations

obj = ArithmeticOperations()
print(obj.get_sum(9,11))

Output:
20

Python xác định phương thức lớp trong tệp riêng biệt

xu hướng

Hướng dẫn cơ bản về Python __all__

Nhập tất cả các lớp từ tệp khác

In this section, we will discuss that can we import all the classes at once from another file. Sometimes, it is the scenario that it is needed to import all the classes from other files. In that case, we use “from import *” statement. We can read it as from file_name import all. It means that we imported all the available classes from the given file. Let’s look at its example.

application/module1/file1.py

class ArithmeticOperations:

    def __init__(self):
        self.sum_ = 0
    
    def get_sum(self,num1,num2):
        self.sum_ = num1+num2
        return self.sum_

class PrintData:

    def __init__(self):
        self.data = ""

    def print_data(self,data):
        self.data = data
        return self.data

    

application/module1/file2.py

application/module1/file1.py
1

application/module1/file1.py
2

Phổ biến bây giờ

Mọi thứ về Python SortedDict

Nhập các lớp từ một thư mục khác

Trong ví dụ này, chúng ta sẽ sử dụng lớp ArithmeticOperations trong file3. tôi. e nằm trong một thư mục khác i. mô-đun e1. Nhưng trước khi làm điều đó, chúng ta phải bao gồm __init__. py tệp trong mô-đun 1 cho trình thông dịch biết rằng mô-đun nằm trong cùng một gói.

Chúng ta cũng phải chỉ định đường dẫn của module1. Đối với điều đó, chúng tôi sẽ sử dụng mô-đun “sys”. Hãy nhìn vào mã

application/module1/file1.py
3

application/module1/file1.py
4

'hệ thống. đường dẫn. chèn(0,”. ”) ‘ Dòng mã này báo cho trình thông dịch rằng trước tiên hãy ra khỏi thư mục hiện tại đến thư mục mẹ và sau đó tìm mô-đun ở đó

Nhập các lớp từ các thư viện được xác định trước

Trong ví dụ trên, chúng tôi đã sử dụng "nhập sys" là thư viện được xác định trước và chúng tôi muốn nhập và sử dụng các chức năng của nó

hệ thống. đường dẫn. chèn(); . Sử dụng các phụ thuộc và mô-đun như vậy giúp công việc của chúng ta dễ dàng hơn vì chúng ta không cần phải viết mã cho các chức năng đó một cách rõ ràng. Chúng tôi chỉ cần kiến ​​thức về gói đã cho và cách sử dụng gói đó

xu hướng

[Đã sửa] ModuleNotFoundError. Không có mô-đun nào được đặt tên là Pycocotools

câu hỏi thường gặp

Lớp nhập Python từ một tệp khác không hoạt động

Trong trường hợp này, vấn đề nằm trong tham chiếu của lớp nguồn mà bạn muốn nhập. Câu trả lời cho câu hỏi này phụ thuộc vào các điều kiện khác nhau mà bạn muốn nhập tệp. Chúng tôi đã thảo luận tất cả những điều trên và bạn có thể tham khảo chúng tùy theo tình trạng của mình

Làm cách nào để sử dụng __import__ để nhập một lớp từ các tệp khác trong Python?

Chúng ta có thể sử dụng đoạn mã sau trong file2. py để nhập động lớp từ file1.

lớp Dynamic_import.

def __init__(self,module_name,class_name).

#__init__ phương thức được sử dụng để nhập mô-đun lấy tên mô-đun làm tham số
module = __import__(module_name)

# . get_sum(class_nm,3,8)
class_nm = getattr(module,class_name)
data= class_nm.get_sum(class_nm,3,8)
print(data)

obj = Dynamic_import(“file1″,”ArithmeticOperations”)

Làm cách nào để nhập lớp động?


Chúng ta có thể nhập động lớp học bằng hàm ma thuật __import__ hoặc mô-đun imp.
Xem ví dụ;

nhập imp
nhập sys

#dynamic import< .
def dynamic_imp(name, class_name):
# lần hiển thị. find_module() trả về đường dẫn và mô tả của mô-đun đã cho

application/module1/file1.py
5

#imp. load_module() trả về lớp hoặc gói
application/module1/file1.py
6
application/module1/file1.py
7
application/module1/file1.py
8

if name = .
mod, modCl = dynamic_imp(“file1 “,”addNumbers”)
modCl. addNumbers(1, 2)

Làm cách nào để nhập một lớp từ sổ ghi chép Jupyter khác?


# Chạy lệnh sau
. pip cài đặt ipynb

# Bạn có thể nhập các sổ ghi chép khác bằng cách sử dụng
từ ipynb. fs. đầy.

Sự kết luận

Vì vậy, hôm nay chúng ta đã xem xét cách chúng ta có thể nhập các lớp từ các tệp hoặc thư mục khác. Chúng tôi cũng đã có được kiến ​​​​thức về Lập trình mô-đun và Tuyên bố nhập khẩu. Chúng tôi đã xem, Lập trình mô-đun đã thay đổi cách tiếp cận lập trình và làm cho nó dễ dàng hơn

Các lớp Python có thể ở trong các tệp khác nhau không?

Một mô-đun có thể bao gồm nhiều lớp hoặc nhiều chức năng . Vì Python không chỉ là ngôn ngữ OO, nên không có quy tắc nào nói rằng, 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/hàm thuộc về nhau, tôi. e. cung cấp chức năng tương tự hoặc phụ thuộc lẫn nhau.

Tôi có nên đặt các lớp trong các tệp Python riêng biệt không?

Python cực kỳ rõ ràng và dễ đọc. Nó khuyến khích bạn đọc nó. Đặt mỗi lớp riêng biệt vào một tệp riêng biệt không khuyến khích việc đọc . Điều này đi ngược lại triết lý cốt lõi của Python.

Các lớp Python được lưu trữ ở đâu?

Các phiên bản lớp có thể được lưu trữ trong các thuộc tính của loại danh sách/từ điển trong các phiên bản lớp khác (ví dụ: phiên bản Note bên trong phiên bản Notebook).

Python có các lớp một phần không?

Python đi kèm với một mô-đun thú vị có tên là funcools. Một trong các lớp của nó là lớp một phần . Bạn có thể sử dụng nó để tạo một hàm mới với ứng dụng một phần của các đối số và từ khóa mà bạn chuyển cho nó. Bạn có thể sử dụng một phần để "đóng băng" một phần đối số và/hoặc từ khóa của hàm dẫn đến một đối tượng mới.