Trước khi bạn đánh dấu nó là trùng lặp, vui lòng đọc vấn đề của tôi: please read my problem:
Tôi đang cố gắng nhập một lớp từ một tệp từ một thư mục con
> main.py
> --->folder/
> ----->file.py
và trong
from folder import file
from file import Klasa
4 tôi có một lớp học [from folder import file
from file import Klasa
5] tôi đã thử gì:đưa vào main.py:
from folder import file
from file import Klasa
Tôi đang gặp lỗi:
Từ nhập tệp klasa
IrtUterror: Không có mô -đun có tên 'Tệp'
Khi tôi cố gắng sử dụng chỉ:
from folder import file
Tôi nhận được lỗi này:
tmp = klasa []
NameError: Tên 'Klasa' không được định nghĩa
Tôi đã đặt một
from folder import file
from file import Klasa
6 trống trong thư mục con và nó vẫn không hoạt động, và tôi đã đặt vào from folder import file
from file import Klasa
6: from folder import file
from file import Klasa
8 và vẫn không hoạt động.Nếu chính và tệp nằm trong cùng một thư mục, công việc này:
from folder import file
from file import Klasa
8Nhưng tôi muốn chúng ở trong các tập tin riêng biệt.
Ai đó có thể cho tôi biết tôi đang làm gì sai không?
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
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
Địa chỉ: Ứng dụng/Project2/Main.pyApplication/Project2/main.py
from folder import file
from file import Klasa
0from folder import file
from file import Klasa
1Nhậ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 folder import file
from file import Klasa
2from folder import file
from file import Klasa
3Vui lòng cho chúng tôi biết phản hồi có giá trị của bạn.