Chúng tôi có đoạn mã sau cho thấy sự phụ thuộc vòng giữa các lớp python.
class P(): q = Q().do_something(); def do_something(self): pass class Q(): p = P().do_something(); def do_something(self): pass
Trong trường hợp các lớp, không giống như với các hàm, phần thân của một lớp được thực thi tại thời điểm xác định. Để định nghĩa lớp P, chúng ta cần thực sự gọi một phương thức Q, điều này chúng ta không thể thực hiện vì lớp Q chưa được định nghĩa.
Để giải quyết vấn đề này, chúng ta có thể xác định các lớp và sau đó thêm các thuộc tính sau đó -
class P(object): pass class Q(object): pass P.q = Q.do_something() Q.p = P.do_something()
Nếu mỗi lệnh gọi do_something phụ thuộc vào lệnh gọi khác đã được thực thi, điều này sẽ không hoạt động. Chúng tôi vẫn cần thực hiện thêm các thay đổi để khắc phục sự cố.
Các lớp có những vấn đề này vì các lệnh ở cấp độ lớp (q =Q.do_something ()) được thực thi trong khi xác định lớp, không phải khi bạn tạo một thể hiện của lớp
Chúng tôi có thể hoàn thành định nghĩa của một lớp sau, sau khi cả hai lớp được định nghĩa. Điều này chứng minh quan điểm rằng Python là một ngôn ngữ động ..