def A():
def B():
#do something
a = A()
a.B()
Tại sao mã ở trên không phải là mã đơn giản như vậy? Có cách giải quyết 'pythonic' (dễ đọc, không ngạc nhiên, không hacky) mà không biến A() thành một lớp học không?Tại sao Python không thể truy cập một hàm phụ từ bên ngoài?
Chỉnh sửa 1: Ở trên đã được giải thích với tôi rằng B là cục bộ A, vì vậy nó chỉ tồn tại miễn là A đang được đánh giá. Vì vậy, nếu chúng ta làm cho nó toàn cầu (và chắc chắn không có nó overriden), thì tại sao điều này không làm việc?
def A():
def B():
#do something
return A()
a = A()
a.B()
Nó nói nó trả về đối tượng 'NoneType'.
Đáng tiếc là nó là vô ích, vì để khởi tạo 'A.B' nó là cần thiết để gọi' A() 'ít nhất một lần. :( – prokher
@prokher nó là cần thiết để gọi A để thậm chí tạo ra một chức năng lồng nhau.Và nó sẽ là một chức năng khác nhau mỗi khi bạn gọi A. Đó là lý do duy nhất để có một chức năng lồng nhau ở nơi đầu tiên. –