2012-11-28 23 views

Trả lời

3

Có một câu hỏi tương tự trong this link. Nhưng câu trả lời ngắn gọn: bạn không thể truy cập một hàm bên trong từ một phần tử bên ngoài.

Đối với mục đích thử nghiệm, có thể một sự thay thế sẽ là thay đổi hàm bên trong cho một bên ngoài riêng tư?

5

Bạn không, bởi vì bạn không thể.

Bạn sẽ phải giới hạn kiểm tra đơn vị của mình với chức năng bên ngoài hoặc bạn di chuyển chức năng bên trong ở nơi khác.

1

Tôi đã có cùng một nghi ngờ và tìm thấy một cách để có được các bài kiểm tra đi cho các chức năng bên trong.

def outer(): 
    def inner(): 
     pass 

    if __debug__: 
     test_inner(inner) 
     # return 

def test_inner(f): 
    f() # this calls the inner function 

outer() 

Về cơ bản, bạn có thể gửi hàm bên trong làm tham số bên ngoài và kiểm tra nó như bạn muốn. Khi gọi bên ngoài(), thử nghiệm của bạn sẽ chạy, và vì nó là một đóng, nó sẽ giữ lại bất kỳ thuộc tính bổ sung nào từ hàm bên ngoài (như các biến). Sử dụng danh sách, bạn có thể gửi bao nhiêu chức năng tùy thích. Để bỏ qua nếu, một tùy chọn là chạy mã như sau:

python -O code.py 
+0

Đây là giải pháp trường hợp rất đặc biệt. Hãy xem xét một hàm lồng nhau trong một vòng lặp, truy cập các biến cục bộ của hàm bên ngoài (trường hợp sử dụng phổ biến hơn cho các hàm lồng nhau, IMHO). – Alfe

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