Hướng dẫn python class in separate file - lớp python trong tệp riêng biệt

Tôi đã thực hiện một số hướng dẫn về Python và tôi biết cách xác định các lớp, nhưng tôi không biết cách sử dụng chúng. Ví dụ: tôi tạo tệp sau (car.py):file (car.py):

class Car(object):
    condition = 'New'
    def __init__(self,brand,model,color):
        self.brand = brand
        self.model = model
        self.color = color

    def drive(self):
        self.condition = 'Used'

Sau đó, tôi tạo một tệp khác (Mercedes.py), trong đó tôi muốn tạo một đối tượng Mercedes từ chiếc xe lớp:

Mercedes = Car('Mercedes', 'S Class', 'Red')

, nhưng tôi gặp lỗi:

NameError: name 'Car' is not defined

Nếu tôi tạo một thể hiện (đối tượng) trong cùng một tệp mà tôi đã tạo nó (CAR), tôi không gặp vấn đề gì:

class Car(object):
    condition = 'New'
    def __init__(self,brand,model,color):
        self.brand = brand
        self.model = model
        self.color = color

    def drive(self):
        self.condition = 'Used'

Mercedes = Car('Mercedes', 'S Class', 'Red')

print (Mercedes.color)

Bản in nào:

Red

Vì vậy, câu hỏi là: Làm thế nào tôi có thể tạo một đối tượng từ một lớp từ các tệp khác nhau trong cùng một gói (thư mục)?

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?

Vì vậy, câu hỏi đầu tiên nghe có vẻ như 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? Hoặc, nó thực sự quan trọng? Hoặc, nó sẽ ảnh hưởng đến phương pháp lập trình của chúng tôi như thế nào? Câu trả lời cho tất cả những câu hỏi này nằm trong bài viết này.why 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.

Đầu tiên, hiểu tại sao nó cần thiết? Trong lập trình, chúng ta thường ở trong các tình huống mà chúng ta phải lặp lại một số hoạt động nhất định. Viết mã cho họ mỗi lần là một nhiệm vụ khá tẻ nhạt. Để tránh các 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 AKA OOPS.Object-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

Nhập các lớp từ một tệp khácPython Import statement comes into the picture.

Nhập tất cả các lớp từ một tệp khác 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
          

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

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)

Mercedes = Car('Mercedes', 'S Class', 'Red')
0

Câu hỏi thường gặp“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;

  • Sự kết luận
  • Xu hướng các bài báo Pythonfile1.ArithmeticOperations() and assign it to variable obj.
  • Vì vậy, câu hỏi đầu tiên nghe có vẻ như 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? Hoặc, nó thực sự quan trọng? Hoặc, nó sẽ ảnh hưởng đến phương pháp lập trình của chúng tôi như thế nào? Câu trả lời cho tất cả những câu hỏi này nằm trong bài viết này.get_sum function by using ‘obj’ object.
  • Đầu tiên, hiểu tại sao nó cần thiết? Trong lập trình, chúng ta thường ở trong các tình huống mà chúng ta phải lặp lại một số hoạt động nhất định. Viết mã cho họ mỗi lần là một nhiệm vụ khá tẻ nhạt. Để tránh các 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 AKA OOPS.c‘ variable.

OOPS là một khái niệm lập trình trong đó chúng tôi tạo các đối tượng dựa trên một số lớp được xác định có một số thuộc tính (được gọi là thuộc tính) và các hàm (được gọi là phương thức). Ưu điểm của việc làm điều đó là chúng ta có thể sử dụng lại nó một số lần chúng ta muốn. Chúng ta cũng có thể thực hiện các thực thể thời gian thực khác như kế thừa (nghĩa là các thuộc tính kế thừa từ các lớp khác), trừu tượng hóa (nghĩa là ẩn thông tin), đa hình (tức là hiện tại dưới nhiều hình thức) E.T.C. trong đó. Đó là một khái niệm độc lập trong chính nó, vì vậy chúng ta sẽ nói về nó phần nào sau này. Hiện tại, hãy tiến lên phía trước và nói về lập trình mô -đun.“from import statement. Take a look to it;

Mercedes = Car('Mercedes', 'S Class', 'Red')
1

Mercedes = Car('Mercedes', 'S Class', 'Red')
2

Hướng dẫn python class in separate file - lớp python trong tệp riêng biệt

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

Mercedes = Car('Mercedes', 'S Class', 'Red')
4

application/module1/file2.py

Mercedes = Car('Mercedes', 'S Class', 'Red')
6

Mercedes = Car('Mercedes', 'S Class', 'Red')
7

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ã.

Mercedes = Car('Mercedes', 'S Class', 'Red')
8

Mercedes = Car('Mercedes', 'S Class', 'Red')
9

‘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

NameError: name 'Car' is not defined
0
def dynamic_imp(name, class_name):
# imp.find_module() returns the path and description of given module
NameError: name 'Car' is not defined
0

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

NameError: name 'Car' is not defined
1
NameError: name 'Car' is not defined
2
NameError: name 'Car' is not defined
3
NameError: name 'Car' is not defined
1
NameError: name 'Car' is not defined
2
NameError: name 'Car' is not defined
3

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 python class in separate file - lớp python trong tệp riêng biệt

    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 python class in separate file - lớp python trong tệp riêng biệt

    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 python class in separate file - lớp python trong tệp riêng biệt

    [Đã 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 python class in separate file - lớp python trong tệp riêng biệt

    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

Các lớp Python có thể nằm 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 chức năng.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.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.. As Python is not an OO language only, it does not make sense do have a rule that says, one file should only contain one class. One file (module) should contain classes / functions that belong together, i.e. provide similar functionality or depend on each other.

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

Python cực kỳ sạch sẽ và dễ đọc.Nó khuyến khích bạn đọc nó.Đặt mọi lớp riêng biệt trong một tập tin riêng biệt không khuyến khích đọc.Điều này đi ngược lại triết lý cốt lõi của Python.Putting every separate class in a separate file discourages reading. This goes against the core philosophy of Python.

Các lớp có nên là các tệp riêng biệt 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ể nhập các lớp học trong Python không?

Python cung cấp cho chúng tôi nhiều cách khác nhau để chúng tôi có thể nhập các lớp và chức năng bằng cách sử dụng các câu lệnh nhập..