Hướng dẫn should each class be in a different file python? - mỗi lớp có nên ở trong một tệp python khác nhau không?

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

Vì Python không chỉ là ngôn ngữ OO, nó không có ý nghĩa có quy tắc nói rằng, một tệp chỉ nên chứa một lớp.not an OO language only, it does not make sense do have a rule that says, one file should only contain one class.

Một tệp (mô -đun) phải chứa các lớp / hàm 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 mô -đun của bạn bao gồm quá nhiều lớp hoặc chức năng. Sau đó, có lẽ đã đến lúc tập hợp lại chức năng thành các mô -đun khác nhau và tạo các gói.
Of course you should not exaggerate this. Readability really suffers if your module consist of too much classes or functions. Then it is probably time to regroup the functionality into different modules and create packages.


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

Tên lớp

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ó một dấu gạch dưới hàng đầu ngoài ra.

Tên gói và tên mô -đun

Các mô-đun nên có tên ngắn, toàn bộ. 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 cũng nên có tên ngắn, toàn bộ, mặc dù việc sử dụng dấu gạch dưới không được khuyến khích.

Vì tên mô -đun được ánh xạ vào tên tệp và một số hệ thống tệp là trường hợp không nhạy cảm và cắt ngắn tên dài Vấn đề khi mã được chuyển đến các phiên bản MAC hoặc Windows cũ hơn hoặc DOS.


Để khởi tạo một đối tượng, bạn phải nhập lớp trong tệp của mình. Ví dụ

>>> 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 hỏi những thứ cơ bản cần thiết, vì vậy tôi khuyên bạn nên đọc hướng dẫn.

Trong bài viết này, chúng tôi sẽ hiểu sự cần thiết của 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 trong ngôn ngữ lập trình Python. Chúng tôi sẽ thảo luận về một số ví dụ để hiểu chúng rõ ràng hơn. Chúng tôi cũng sẽ hiểu làm thế nào các thư viện được xác định trước giúp chúng tôi. Vậy hãy bắt đầu.modular programming and then will learn how to Import Classes from another file in the python programming language. We will discuss some examples to understand them more clearly. We will also understand how predefined libraries help us. So let’s get started.

  • Tại sao nó cần thiết?
  • Lập trình hướng đối tượng hoặc rất tiếc
  • 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ừ mộ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 các bài báo Python

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

Lập trình hướng đối tượng hoặc rất tiếcwhy we need to import any file or classes from another file? Or, Is it really important? Or, How it will affect our programming approach? Answers to all these questions are within this article.

Lập trình mô -đunObject-Oriented Programming aka OOPs.

Lập trình hướng đối tượng hoặc rất tiếc

Lập trình mô -đunattributes) and functions (called methods). The advantage of doing that is we can reuse it a number of times we want. We can also implement other real-time entities like inheritance ( i.e. inheriting properties from other classes), abstraction ( i.e. information hiding), polymorphism (i.e. present in many forms) e.t.c. in it. It is an independent concept in itself, so we will talk about it somewhat later. For now, move ahead and talk about modular programming.

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

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ẩureadability of codes. We can reuse it a number of times. More, it is easy for us to maintain them and make changes to them according to our use. Moreover, it helps us a lot while debugging our program as we don’t have to fumble much in one file.

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

Một 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, tuyên bố nhập khẩu Python đi vào hình ảnh.Python Import statement comes into the picture.

Báo cáo nhập giúp nhập mã từ các tệp hoặc mô -đun khác vào tệp chúng tôi đang làm việc. Bạn có thể nghĩ về nó như một cây cầu cho phép chúng tôi 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 tôi 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. Trước đó lần đầu tiên hiểu cấu trúc thư mục đã cho. helps in importing code from other files or modules into the file we are working on. You can think of it as a bridge that gives us access to the class attributes or methods from other files so that we can use them. However, there is a proper syntax to follow to do that which we will see in a few seconds. Before that first understand the given directory structure.


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 tôi có một thư mục ứng dụng chứa hai thư mục có tên Module1 và Module2. Bên trong mỗi thư mục, chúng tôi có các tệp có tên FILE1, FILE2 và FILE3 tương ứng. Bây giờ, chúng tôi 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. Chúng tôi đi đây,

Trong ví dụ này, trước tiên, chúng tôi sẽ xác định 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 FILE1 bằng cách sử dụng câu lệnh nhập khẩu. Sau đó, chúng tôi tạo một thể hiện của lớp chúng tôi muốn sử dụng, tức là các hoạt động học bằng cách tham khảo nó. Chúng ta có thể hiểu nó như;“import” statement. After that, we create an instance of the class we want to use i.e. ArithmeticOperations by referring to it. We can understand it as;

  • Chúng tôi đã nhập tệp có tên File1.
  • Sau đó, chúng tôi đề cập đến lớp đó bằng File1.arithMeticOperations () và gán nó cho biến OBJ biến.file1.ArithmeticOperations() and assign it to variable obj.
  • Sau đó, chúng tôi gọi chức năng get_sum bằng cách sử dụng đối tượng ‘obj.get_sum function by using ‘obj’ object.
  • Và, sau đó in kết quả được gán trong ‘C‘ biến.c‘ variable.

Chúng tôi cũng có thể làm điều đó bằng cách sử dụng câu lệnh từ nhập từ nhập khẩu. Hãy nhìn vào nó;“from import statement. Take a look to it;

from file1 import ArithmeticOperations

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

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

Hướng dẫn should each class be in a different file python? - mỗi lớp có nên ở trong một tệp python khác nhau không?

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

Trong phần này, chúng tôi sẽ thảo luận rằng chúng tôi có thể nhập tất cả các lớp cùng một lúc từ một tệp khác. Đôi khi, đó là kịch bản cần thiết để nhập tất cả các lớp từ các tệp khác. Trong trường hợp đó, chúng tôi sử dụng câu lệnh từ nhập từ nhập từ *. Chúng ta có thể đọc nó như từ nhập file_name. Nó có nghĩa là chúng tôi đã nhập tất cả các lớp có sẵn từ tệp đã cho. Hãy cùng nhìn vào ví dụ của nó.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

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

application/module1/file2.py

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

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

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

Trong ví dụ này, chúng tôi sẽ sử dụng lớp ArithMeticOperations trong File3.py i.e nằm trong một thư mục khác i.e Module1. Nhưng trước khi làm điều đó, chúng tôi phải bao gồm tệp __init__.py trong Module1, nói với trình thông dịch rằng mô -đun nằm trong cùng một gói.__init__.py file in module1 which tells the interpreter that the module is within the same package.

Chúng tôi 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 SYS. Hãy cùng nhìn vào mã.

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

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

‘Sys.path.insert (0 ,, ..

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 Sys Sys, một thư viện được xác định trước và chúng tôi muốn nhập nó và sử dụng các chức năng của nó.

sys.path.insert (); Chúng tôi có thể hiểu rằng chúng tôi muốn sử dụng phương thức chèn từ lớp đường dẫn có trong mô -đun SYS. Sử dụng các phụ thuộc và mô -đun như vậy làm cho các tác phẩm của chúng tôi dễ dàng hơn vì chúng tôi 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 nó.; We can understand, that we want to use the insert method from the path class that is present in the sys module. Using such dependencies and modules make our works easier as we don’t need to write code for those function explicitly. We just need the knowledge of the given package and how to use it.

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 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 về tất cả những điều trên và bạn có thể tham khảo chúng theo điều kiện của bạn.

Làm thế 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 mã sau trong File2.py để nhập lớp từ File1 một cách linh hoạt.

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 mô -đun tham số = __Import __ (module_name)
module = __import__(module_name)

# getAttr () được sử dụng để nhập tên lớp Mẫu mô -đun mà chúng tôi đã nhập class_nm = getattr (mô -đun, class_name) data = class_nm.get_sum (class_nm, 3,8) in (dữ liệu)
class_nm = getattr(module,class_name)
data= class_nm.get_sum(class_nm,3,8)
print(data)

obj = Dynamic_Import (Hồi File1, arithmeticoperations

Làm thế nào để nhập lớp động?

Chúng ta có thể nhập lớp động bằng cách sử dụng hàm __Import__ hàm ma thuật hoặc mô -đun imp. Xem nó bằng một ví dụ;__import__ magic function or imp module.
See it with an example;

Nhập khẩu SYS IMPIMPORT
import sys

#DODNAMIC INTIRTDEF Dynamic_imp (Tên, Class_Name): # Imp.Find_Module () Trả về đường dẫn và mô tả của mô -đun đã cho

>>> import mymodule
>>> obj = mymodule.MyClass()
8
def dynamic_imp(name, class_name):
# imp.find_module() returns the path and description of given module
>>> import mymodule
>>> obj = mymodule.MyClass()
8

#imp.load_module () Trả về lớp hoặc gói

>>> import mymodule
>>> obj = mymodule.MyClass()
9
>>> from mypackage.mymodule import MyClass
>>> obj = MyClass()
0
>>> from mypackage.mymodule import MyClass
>>> obj = MyClass()
1
>>> import mymodule
>>> obj = mymodule.MyClass()
9
>>> from mypackage.mymodule import MyClass
>>> obj = MyClass()
0
>>> from mypackage.mymodule import MyClass
>>> obj = MyClass()
1

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

Làm cách nào để nhập một lớp từ một máy tính xách tay Jupyter khác?

# Chạy lệnh sau! Cài đặt PIP IPynb
!pip install ipynb

# Bạn có thể nhập các máy tính xách tay khác bằng cách sử dụng từ ipynb.fs.full. nhập khẩu *
from ipynb.fs.full. import *

Sự kết luận

Vì vậy, hôm nay chúng tôi đã xem xét làm thế nào chúng tôi 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 xét, 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.Modular Programming and Import Statement. We looked, Modular programming changed the approach of programming and made it easier.

Tôi hy vọng bài viết này đã giúp bạn. Tiếp tục hỗ trợ. Cảm ơn!

Xu hướng các bài báo Python

  • Hướng dẫn should each class be in a different file python? - mỗi lớp có nên ở trong một tệp python khác nhau không?

    Hướng dẫn cuối cùng về Python __all__

    ● Ngày 13 tháng 11 năm 2022November 13, 2022

  • Hướng dẫn should each class be in a different file python? - mỗi lớp có nên ở trong một tệp python khác nhau không?

    Mọi thứ về Python sắp xếp

    bởi Python Pool ● Ngày 13 tháng 11 năm 2022November 13, 2022

  • Hướng dẫn should each class be in a different file python? - mỗi lớp có nên ở trong một tệp python khác nhau không?

    [Đã sửa] ModulenotFounderror: Không có mô -đun có tên PyCoCotools

    bởi Python Pool ● Ngày 28 tháng 10 năm 2022October 28, 2022

  • Hướng dẫn should each class be in a different file python? - mỗi lớp có nên ở trong một tệp python khác nhau không?

    Tạo khóa đối xứng OpenSSL bằng Python

    Bởi Vishnu Venkatesh ● Ngày 11 tháng 10 năm 2022October 11, 2022

Mỗi lớp có nên có một tệp riêng không?

Đó là thực hành tốt để làm như vậy.Bạn có thể dễ dàng tìm thấy lớp nếu bạn đặt tên cho tệp theo lớp.. You can easily find the class if you name the file after the class.

Bạn có thể có nhiều lớp Python trong một tệp không?

Vì vậy, một mô -đun là một đơn vị hoặc tái sử dụng.Quy tắc là: Một mô -đun là đơn vị tái sử dụng.Tất cả mọi thứ trong các thư viện Python và các ứng dụng Python khác là một mô -đun hoặc gói mô -đun.Không có giới hạn về số lượng lớp mà người ta có thể đặt trong một tệp hoặc một mô -đun.There is no limit on how many classes one can put in a file or a module.

Một lớp có nên có tệp riêng không?

Vì vậy, trình biên dịch không nên lo lắng quá nhiều về việc liên kết một lớp không công khai vì đây là những điều riêng tư với gói.Nhưng chúng ta nên luôn luôn khai báo mọi lớp trong tệp riêng của mình bởi vì chúng tôi sẽ làm cho nguồn ngắn, đơn giản, được tổ chức tốt và dễ hiểu.we should always declare every class in its own file because it we will make the source short, simple, well organised and easy to understand.

Các lớp con có nên ở trong cùng một tệp?

Bạn không cần phải, nhưng nói chung, có.Giữ một lớp con trong cùng một tệp sẽ là ngoại lệ đối với quy tắc.Trước hết, bạn không nên chỉ xếp hàng tấn mã vào một tệp.Keeping a subclass in the same file would be the exception to the rule. First of all, you shouldn't just pile tons of code into a single file.