Hướng dẫn python import object from another file - đối tượng nhập python từ một tệp khác

Nếu mô -đun

from foo.a import A
from foo.b import B
from foo.c import C
5 thực hiện
from foo.a import A
from foo.b import B
from foo.c import C
6, thì
from foo.a import A
from foo.b import B
from foo.c import C
7 là thành viên của
from foo.a import A
from foo.b import B
from foo.c import C
5 sau đó và có thể truy cập là
from foo.a import A
from foo.b import B
from foo.c import C
9. Nó chỉ là do bây giờ bạn có thể nhập nó bằng cách sử dụng
from a import A
from b import B
from c import C
0.

Điều này thường được sử dụng nếu bạn có một thư viện lớn được phân phối trên nhiều tệp và bạn muốn chúng có thể truy cập được từ một vị trí duy nhất. Giả sử bạn có gói

from a import A
from b import B
from c import C
1 với bố cục sau:

foo/
    a.py
    b.py
    c.py
    __init__.py

from a import A
from b import B
from c import C
2,
from a import A
from b import B
from c import C
3,
from a import A
from b import B
from c import C
4, xác định các lớp
from a import A
from b import B
from c import C
5,
from a import A
from b import B
from c import C
6 và
from a import A
from b import B
from c import C
7, tương ứng.

Nếu bạn muốn sử dụng các lớp đó, bạn thường phải viết

from foo.a import A
from foo.b import B
from foo.c import C

Điều này có ít nhất hai vấn đề:

  1. Nhiều mã [ba dòng] là cần thiết cho nhập đơn giản này
  2. Tác giả thư viện giờ đây không còn thay đổi liên kết tệp/lớp sau đó, vì điều đó sẽ phá vỡ mã hiện có.

Vì vậy, thông thường bạn chỉ cần đặt những thứ sau trong

from a import A
from b import B
from c import C
8:

from a import A
from b import B
from c import C

Bây giờ bạn đặt tất cả các mảnh lại với nhau ở một nơi duy nhất và tất cả các lớp có thể truy cập với một lần nhập:

from foo import A,B,C

Khi chương trình rất phức tạp, chúng tôi thường chia nó thành các đoạn hoặc mô -đun và được lưu vào nhiều tệp. Điều này làm giảm sự phức tạp và giúp dễ dàng gỡ lỗi hoặc xác định các lỗi trong mã. Giả sử bạn muốn sử dụng một lớp trong một tệp khác. Đối với điều này, bạn cần nhập lớp đó vào tệp nơi bạn muốn sử dụng nó.

Trong hướng dẫn này, chúng tôi sẽ thảo luận về một số phương pháp được sử dụng để nhập các lớp. Nhập các lớp từ các chương trình khác cho phép chúng tôi sử dụng chúng trong chương trình hiện tại. Do đó, giúp cải thiện khả năng đọc và khả năng tái sử dụng của mã. Nhập khẩu có thể được thực hiện trong cùng hoặc từ các thư mục khác nhau.

Nếu bạn muốn tìm hiểu thêm về lập trình Python, hãy truy cập các hướng dẫn lập trình Python.

Một số cách phổ biến để nhập một lớp từ một tệp khác trong Python được liệt kê bên dưới

  • Nhập một lớp cụ thể bằng cách sử dụng lệnh nhập.
  • Nhập các lớp Mulitple từ một tệp bằng lệnh nhập.
  • Nhập tất cả các lớp từ một tệp bằng lệnh nhập*.
  • Nhập tất cả các lớp từ một thư mục khác trong thư mục cha bằng lệnh nhập SYS.
  • Nhập một lớp một cách linh hoạt.

Nhập một lớp cụ thể bằng cách sử dụng lệnh nhập

Bạn chỉ cần tạo một tệp .py khác giống như myfile.py và biến lớp thành tên mong muốn. Sau đó, trong tệp chính chỉ cần nhập lớp bằng dòng lệnh từ hình vuông nhập khẩu myfile.from MyFile import Square.

#Code starts here

MyFile.py
class Square:
   def __init__[self,val]:
      self.val=val
   def getVal[self]:
      return self.val*self.val

main.py
from MyFile import Square

newClass = Square[5]
val = newClass.getVal[]

print[val]

#Code ends here

Output:
25

Nhập nhiều lớp từ một tệp bằng lệnh nhập

Khi bạn có nhiều lớp trong myfile.py. Sau đó, thay vì viết lệnh nhập với mỗi lớp, bạn chỉ cần nhập tệp chứa các lớp và trong tệp chính. Sử dụng các lớp này bằng cách tạo các đối tượng tương ứng của chúng.

#Code starts here

MyFile.py
class Square:
   def __init__[self,val]:
      self.val=val
   def getVal[self]:
      return self.val*self.val


class Add_Sub:
   def add[self, a, b]:
      return a + b
   def sub[self, a, b]:
      return a - b

main.py
import MyFile
# creating object for Square class
object1 = MyFile.Square[5]
print[f"From class Square: {object1.getVal[]}"]
# creating object for Add_Sub class
object2 = MyFile.Add_Sub[]
print[f"From class Add_Sub: Addition {object2.add[2,3]}"]
print[f"From class Add_Sub: Subtraction {object2.sub[2,3]}"]

#Code ends here

OUTPUT:

From class Square: 25
From class Add_Sub: Addition 5
From class Add_Sub: Subtraction -1

Nhập tất cả các lớp từ một tệp bằng lệnh nhập *

Ở đây bạn chỉ cần viết một dấu hoa thị [*] & nbsp; với lệnh nhập i.e, nhập*. Lệnh này cho phép truy cập vào tất cả các lớp và bạn không cần phải viết tên của lớp với mọi chức năng. Bạn chỉ cần làm cho đối tượng với lớp tương ứng đó.

#Code starts here

MyFile.py
class Square:
   def __init__[self,val]:
      self.val=val
   def getVal[self]:
      return self.val*self.val


class Add_Sub:
   def add[self, a, b]:
      return a + b
   def sub[self, a, b]:
      return a - b

main.py
from MyFile import *
# creating object for Square class
object1 = Square[5]
print[f"From class Square: {object1.getVal[]}"]
# creating object for Add_Sub class
object2 = Add_Sub[]
print[f"From class Add_Sub: Addition {object2.add[2,3]}"]
print[f"From class Add_Sub: Addition {object2.sub[2,3]}"]

#Code ends here

Output:

From class Square: 25
From class Add_Sub: Addition 5
From class Add_Sub: Addition -1

Nhập tất cả các lớp từ một thư mục khác trong thư mục mẹ bằng lệnh nhập SYS

Ở đây bên trong_project là thư mục đang giữ tệp của các lớp của chúng tôi. Tệp chính nằm trong một thư mục khác ‘Project2, cũng là thư mục gốc của Inside_Project. Trước khi nhập, chúng tôi phải bao gồm tệp __init__.py trong Inside_Project & nbsp; sẽ chứa các lớp của chúng tôi để nói với trình thông dịch rằng dự án của chúng tôi nằm trong cùng một gói.we have to include the __init__.py file in the Inner_Project that will contain our classes to tell the interpreter that our Project is within the same package.

Sys.Path.insert [0, Hồi ..] Yêu cầu người phiên dịch nhìn từ thư mục cha mẹ để loại bỏ lớp mong muốn.“..”] command tells the interpreter to look from the parent folder to take out the desired class.

Địa chỉ: Ứng dụng/Inside_Project/myFile.pyApplication/Inner_Project/MyFile.py

from foo.a import A
from foo.b import B
from foo.c import C
0

Địa chỉ: Ứng dụng/Project2/Main.pyApplication/Project2/main.py

from foo.a import A
from foo.b import B
from foo.c import C
1

from foo.a import A
from foo.b import B
from foo.c import C
2

Nhập một lớp một cách linh hoạt

Ở đây, lệnh __Import __ [module_name] được sử dụng để nhập mô -đun hoặc tệp, trong khi getAttr [] & nbsp; Lệnh được sử dụng để có được các thuộc tính của lớp.

from foo.a import A
from foo.b import B
from foo.c import C
3

from foo.a import A
from foo.b import B
from foo.c import C
4

Vui lòng cho chúng tôi biết phản hồi có giá trị của bạn.

Chúng ta có thể nhập các đối tượng trong Python không?

Vâng, bạn chỉ cần nhập nó..

__ nhập khẩu __ trong python là gì?

Người ta có thể sử dụng hàm __Import __ [] của Python.Nó cũng giúp nhập các mô -đun trong thời gian chạy.Cú pháp: __Import __ [Tên, Globals, Locals, FromList, Level] Tham số: Tên: Tên của mô -đun sẽ được nhập.It helps to import modules in runtime also. Syntax: __import__[name, globals, locals, fromlist, level] Parameters: name : Name of the module to be imported.

Bạn có thể nhập các chức năng từ một tệp Python khác không?

Để sử dụng các chức năng được viết trong một tệp bên trong một tệp khác bao gồm dòng nhập, từ FileName Nhập chức năng_name.Lưu ý rằng mặc dù tên tệp phải chứa a.Tiện ích mở rộng PY,.PY không được sử dụng như một phần của tên tệp trong quá trình nhập.include the import line, from filename import function_name . Note that although the file name must contain a . py extension, . py is not used as part of the filename during import.

__ init __ py là gì?

Các tệp __init__.py được yêu cầu để làm cho các thư mục xử lý Python chứa tệp dưới dạng các gói.Điều này ngăn các thư mục có tên chung, chẳng hạn như chuỗi, vô tình ẩn các mô -đun hợp lệ xảy ra sau đó trên đường dẫn tìm kiếm mô -đun.required to make Python treat directories containing the file as packages. This prevents directories with a common name, such as string , unintentionally hiding valid modules that occur later on the module search path.

Bài Viết Liên Quan

Chủ Đề