Hướng dẫn python can t import class from file - python không thể nhập lớp từ tệp

Tôi có một thư mục lưu trữ tất cả các tệp .py..py files.

bin/
   main.py
   user.py # where class User resides
   dir.py # where class Dir resides

Tôi muốn sử dụng các lớp từ user.py và dir.py trong main.py. Làm thế nào tôi có thể nhập các lớp python này vào main.py? Hơn nữa, làm thế nào tôi có thể nhập lớp

bin/
    main.py
    classes/
        user.py
        dir.py
3 nếu user.py nằm trong thư mục phụ?user.py and dir.py in main.py.
How can I import these Python classes into main.py?
Furthermore, how can I import class
bin/
    main.py
    classes/
        user.py
        dir.py
3 if user.py is in a sub directory?

bin/
    dir.py
    main.py
    usr/
        user.py

Kenorb

Phù bằng vàng 146K7777 gold badges659 silver badges715 bronze badges

Đã hỏi ngày 10 tháng 11 năm 2010 lúc 7:32Nov 10, 2010 at 7:32

Bin Chenbin ChenBin Chen

59.6K53 Huy hiệu vàng141 Huy hiệu bạc182 Huy hiệu đồng53 gold badges141 silver badges182 bronze badges

2

Python 2

Tạo một tệp trống có tên

bin/
    main.py
    classes/
        user.py
        dir.py
4 trong cùng thư mục với các tệp. Điều đó sẽ biểu thị cho Python rằng "OK để nhập từ thư mục này".

Sau đó, chỉ cần làm ...

from user import User
from dir import Dir

Điều tương tự cũng đúng nếu các tệp trong một thư mục con - cũng đặt một

bin/
    main.py
    classes/
        user.py
        dir.py
4 vào thư mục con, sau đó sử dụng các câu lệnh nhập thường xuyên, với ký hiệu DOT. Đối với mỗi cấp độ của thư mục, bạn cần thêm vào đường dẫn nhập.

bin/
    main.py
    classes/
        user.py
        dir.py

Vì vậy, nếu thư mục được đặt tên là "lớp", thì bạn sẽ làm điều này:

from classes.user import User
from classes.dir import Dir

Python 3

Tương tự như trước, nhưng tiền tố tên mô -đun với

bin/
    main.py
    classes/
        user.py
        dir.py
6 nếu không sử dụng thư mục con:

from .user import User
from .dir import Dir

Đã trả lời ngày 10 tháng 11 năm 2010 lúc 7:36Nov 10, 2010 at 7:36

19

Tôi vừa học (nhờ nhận xét của Martineau) rằng, để nhập các lớp từ các tệp trong cùng một thư mục, giờ đây bạn sẽ viết trong Python 3:

from .user import User
from .dir import Dir

Đã trả lời ngày 8 tháng 2 năm 2015 lúc 10:07Feb 8, 2015 at 10:07

ECPECPecp

2.0911 Huy hiệu vàng11 Huy hiệu bạc10 Huy hiệu đồng1 gold badge11 silver badges10 bronze badges

8

Từ Python3.3 trở lên,

bin/
    main.py
    classes/
        user.py
        dir.py
4 không còn cần thiết. Nếu thư mục hiện tại của bảng điều khiển là thư mục có tập lệnh Python, mọi thứ đều hoạt động tốt với

import user

Tuy nhiên, điều này sẽ không hoạt động nếu được gọi từ một thư mục khác, không chứa

bin/
    main.py
    classes/
        user.py
        dir.py
8. Trong trường hợp đó, sử dụng
In that case, use

from . import user

Điều này hoạt động ngay cả khi bạn muốn nhập toàn bộ tệp thay vì chỉ một lớp từ đó.

Đã trả lời ngày 16 tháng 7 năm 2019 lúc 13:40Jul 16, 2019 at 13:40

Lucidbrotlucidbrotlucidbrot

5.0453 Huy hiệu vàng37 Huy hiệu bạc63 Huy hiệu Đồng3 gold badges37 silver badges63 bronze badges

5

Trong

bin/
    main.py
    classes/
        user.py
        dir.py
9 của bạn:

from user import Class

trong đó

from classes.user import User
from classes.dir import Dir
0 là tên của lớp bạn muốn nhập.

Nếu bạn muốn gọi một phương thức của

from classes.user import User
from classes.dir import Dir
0, bạn có thể gọi nó bằng cách sử dụng:

from classes.user import User
from classes.dir import Dir
2

Lưu ý rằng cần có một tệp

bin/
    main.py
    classes/
        user.py
        dir.py
4 trống trong cùng một thư mục.

Thatmsg

1.4061 Huy hiệu vàng17 Huy hiệu bạc27 Huy hiệu đồng1 gold badge17 silver badges27 bronze badges

Đã trả lời ngày 10 tháng 11 năm 2010 lúc 7:38Nov 10, 2010 at 7:38

user225312user225312user225312

122K66 Huy hiệu vàng167 Huy hiệu bạc181 Huy hiệu Đồng66 gold badges167 silver badges181 bronze badges

2

Nếu user.py và dir.py không bao gồm các lớp thì

from .user import User
from .dir import Dir

không hoạt động. Sau đó bạn nên nhập dưới dạng

bin/
    dir.py
    main.py
    usr/
        user.py
1

Đã trả lời ngày 16 tháng 9 năm 2019 lúc 15:51Sep 16, 2019 at 15:51

2

Bạn có thể nhập mô -đun và có quyền truy cập thông qua tên của nó nếu bạn không muốn trộn các chức năng và các lớp với của bạn

bin/
    dir.py
    main.py
    usr/
        user.py
2

Hoặc bạn có thể nhập các chức năng và lớp vào mã của mình

bin/
    dir.py
    main.py
    usr/
        user.py
3

Bạn có thể sử dụng Wildchar * để nhập mọi thứ trong mô -đun đó vào mã của bạn

bin/
    dir.py
    main.py
    usr/
        user.py
4

Joe

5795 Huy hiệu bạc11 Huy hiệu đồng5 silver badges11 bronze badges

Đã trả lời ngày 21 tháng 7 năm 2014 lúc 11:54Jul 21, 2014 at 11:54

A.ZabenA.ZabenA.Zaben

6756 Huy hiệu bạc9 Huy hiệu Đồng6 silver badges9 bronze badges

1

Để làm cho nó đơn giản hơn để hiểu:

Bước 1: Hãy đi đến một thư mục, trong đó tất cả sẽ được bao gồm

bin/
    dir.py
    main.py
    usr/
        user.py
5

Bước 2: Bây giờ hãy tạo tệp class1.py có tên lớp class1 với một số mã

bin/
    dir.py
    main.py
    usr/
        user.py
6

Bước 3: Bây giờ hãy tạo tệp Class2.py có tên lớp Class2 với một số mã

bin/
    dir.py
    main.py
    usr/
        user.py
7

Bước 4: Bây giờ hãy tạo một Main.py sẽ được thực thi một lần để sử dụng Class1 và Class2 từ 2 tệp khác nhau

bin/
    dir.py
    main.py
    usr/
        user.py
8

Bước 5: Chạy chương trình

bin/
    dir.py
    main.py
    usr/
        user.py
9

Đầu ra sẽ là

from user import User
from dir import Dir
0

Hassan

85013 Huy hiệu bạc25 Huy hiệu Đồng13 silver badges25 bronze badges

Đã trả lời ngày 21 tháng 9 năm 2013 lúc 19:17Sep 21, 2013 at 19:17

1

Python 3


Tương tự như trước, nhưng tiền tố tên mô -đun với

bin/
    main.py
    classes/
        user.py
        dir.py
6 nếu không sử dụng thư mục con:

Đã trả lời ngày 10 tháng 11 năm 2010 lúc 7:36

Tôi vừa học (nhờ nhận xét của Martineau) rằng, để nhập các lớp từ các tệp trong cùng một thư mục, giờ đây bạn sẽ viết trong Python 3:

from user import User
from dir import Dir
1

Đã trả lời ngày 8 tháng 2 năm 2015 lúc 10:07

ECPECP

2.0911 Huy hiệu vàng11 Huy hiệu bạc10 Huy hiệu đồng

Tôi vừa học (nhờ nhận xét của Martineau) rằng, để nhập các lớp từ các tệp trong cùng một thư mục, giờ đây bạn sẽ viết trong Python 3:

from user import User
from dir import Dir
2

Đã trả lời ngày 8 tháng 2 năm 2015 lúc 10:07Nov 15, 2018 at 9:05

from user import User
from dir import Dir
3

ECPECPNov 10, 2010 at 7:35

2.0911 Huy hiệu vàng11 Huy hiệu bạc10 Huy hiệu đồngceth

Từ Python3.3 trở lên,

bin/
    main.py
    classes/
        user.py
        dir.py
4 không còn cần thiết. Nếu thư mục hiện tại của bảng điều khiển là thư mục có tập lệnh Python, mọi thứ đều hoạt động tốt với61 gold badges175 silver badges282 bronze badges

2

Tuy nhiên, điều này sẽ không hoạt động nếu được gọi từ một thư mục khác, không chứa

bin/
    main.py
    classes/
        user.py
        dir.py
8. Trong trường hợp đó, sử dụng

from user import User
from dir import Dir
4

Điều này hoạt động ngay cả khi bạn muốn nhập toàn bộ tệp thay vì chỉ một lớp từ đó.

from .user import User
from .dir import Dir
1

Đã trả lời ngày 16 tháng 7 năm 2019 lúc 13:40

Lucidbrotlucidbrot

5.0453 Huy hiệu vàng37 Huy hiệu bạc63 Huy hiệu Đồng

Trong

bin/
    main.py
    classes/
        user.py
        dir.py
9 của bạn:Jun 25, 2021 at 7:56

trong đó

from classes.user import User
from classes.dir import Dir
0 là tên của lớp bạn muốn nhập.minglyu

Nếu bạn muốn gọi một phương thức của

from classes.user import User
from classes.dir import Dir
0, bạn có thể gọi nó bằng cách sử dụng:2 gold badges11 silver badges31 bronze badges

Lưu ý rằng cần có một tệp

bin/
    main.py
    classes/
        user.py
        dir.py
4 trống trong cùng một thư mục.

Thatmsg

1.4061 Huy hiệu vàng17 Huy hiệu bạc27 Huy hiệu đồngFeb 27, 2020 at 20:56

Đã trả lời ngày 10 tháng 11 năm 2010 lúc 7:38stingMantis

122K66 Huy hiệu vàng167 Huy hiệu bạc181 Huy hiệu Đồng2 silver badges10 bronze badges

1

Nếu user.py và dir.py không bao gồm các lớp thì

không hoạt động. Sau đó bạn nên nhập dưới dạng
import from nephew:

from .user import User
from .dir import Dir
6

Đã trả lời ngày 16 tháng 9 năm 2019 lúc 15:51Nov 24, 2020 at 9:36

Bạn có thể nhập mô -đun và có quyền truy cập thông qua tên của nó nếu bạn không muốn trộn các chức năng và các lớp với của bạnIceberg

Hoặc bạn có thể nhập các chức năng và lớp vào mã của mình16 silver badges19 bronze badges

Bạn có thể sử dụng Wildchar * để nhập mọi thứ trong mô -đun đó vào mã của bạn

from user import User
from dir import Dir
6

Joe

Đã trả lời ngày 21 tháng 12 năm 2020 lúc 5:22Dec 21, 2020 at 5:22

Kobakokobakokobako

5964 Huy hiệu bạc10 Huy hiệu Đồng4 silver badges10 bronze badges

from user import User
from dir import Dir
7

Đã trả lời ngày 7 tháng 6 năm 2021 lúc 17:32Jun 7, 2021 at 17:32

1

Python3

sử dụng

from user import User
from dir import Dir
8

from user import User
from dir import Dir
9

như vậy

Đã trả lời ngày 5 tháng 12 năm 2019 lúc 19:22Dec 5, 2019 at 19:22

Icharisicharisicharis

Huy hiệu Bạc 1911 Huy hiệu đồng1 silver badge3 bronze badges

1

Quá ngắn gọn, tạo một tệp

bin/
    main.py
    classes/
        user.py
        dir.py
4 là thư mục lớp và sau đó nhập nó vào tập lệnh của bạn như sau (nhập mọi trường hợp)

bin/
    main.py
    classes/
        user.py
        dir.py
0

Chỉ nhập các lớp đã chọn

bin/
    main.py
    classes/
        user.py
        dir.py
1

Đã trả lời ngày 26 tháng 1 năm 2017 lúc 4:00Jan 26, 2017 at 4:00

1

nhập từ cùng một thư mục

bin/
    main.py
    classes/
        user.py
        dir.py
2

Để nhập từ thư mục phụ, thư mục phải chứa

init.py.py

Tệp khác với các tệp của bạn sau đó

Từ thư mục nhập của bạn_file

Đã trả lời ngày 24 tháng 8 năm 2019 lúc 6:06Aug 24, 2019 at 6:06

1

Tại sao tôi không thể nhập vào Python?

Lỗi này thường xảy ra khi một lớp không thể được nhập do một trong những lý do sau: Lớp nhập khẩu nằm trong một phụ thuộc tròn.Lớp nhập khẩu không có sẵn hoặc không được tạo.Tên lớp nhập khẩu là sai chính tả.The imported class is in a circular dependency. The imported class is unavailable or was not created. The imported class name is misspelled.

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

__ init __ py nên chứa gì?

Tệp __init__.py có thể chứa cùng một mã python mà bất kỳ mô -đun nào khác có thể chứa và Python sẽ thêm một số thuộc tính bổ sung vào mô -đun khi được nhập.the same Python code that any other module can contain, and Python will add some additional attributes to the module when it is imported.