2013-07-31 37 views
6

Tôi có một lớp học và tôi muốn nhập một hàm def bằng cách thực hiện:Python: nhập khẩu một file py

import <file> 

nhưng khi tôi cố gắng gọi nó, nó nói rằng def không thể được tìm thấy. Tôi cũng đã thử:

from <file> import <def> 

nhưng sau đó nó nói tên chung 'x' không được xác định.

Vậy làm cách nào tôi có thể thực hiện việc này?

Chỉnh sửa:

Đây là ví dụ về những gì tôi đang cố gắng làm. Trong file1.py tôi có:

var = "hi" 

class a: 
    def __init__(self): 
    self.b() 

    import file2 

a() 

và trong file2.py tôi có:

def b(self): 
    print(var) 

nó chỉ là đem lại cho tôi một lỗi mặc dù.

+0

bạn đang cố gắng nhập gì? và nếu không phải là nó trong cùng thư mục với thư mục làm việc của bạn? – Stephan

+0

Bạn không nhập một tệp '; bạn nhập * mô-đun * hoặc tên có trong mô-đun. 'import modulename', không phải' import filename.py'. Bạn sẽ cần thêm một ví dụ cụ thể hơn để minh họa vấn đề của mình tốt hơn. –

+0

Bạn có thể đặt câu lệnh nhập thực tế và đường dẫn tệp thực sự tuyệt đối trong bài đăng của mình không? – user2357112

Trả lời

7
import file2 

nạp module file2 và liên kết nó với tên file2 trong không gian tên hiện tại. b từ file2 có sẵn dưới dạng file2.b, không phải b, do đó, nó không được công nhận là phương thức. Bạn có thể sửa chữa nó với

from file2 import b 

đó sẽ nạp module và giao cho b chức năng từ mô-đun đó tới tên b. Tôi sẽ không khuyên bạn nên nó, mặc dù. Nhập file2 ở cấp cao nhất và xác định phương thức ủy quyền cho file2.b hoặc xác định siêu lớp mixin mà bạn có thể kế thừa nếu bạn thường xuyên sử dụng cùng một phương thức trong các lớp không liên quan. Việc nhập hàm để sử dụng nó làm phương pháp gây nhầm lẫn và nó sẽ bị hỏng nếu chức năng bạn đang cố gắng sử dụng được triển khai trong C.

Các vấn đề liên quan