เรามีโค้ดต่อไปนี้ซึ่งแสดงการพึ่งพาแบบวงกลมระหว่างคลาส python
class P(): q = Q().do_something(); def do_something(self): pass class Q(): p = P().do_something(); def do_something(self): pass
ในกรณีของคลาส ไม่เหมือนกับฟังก์ชัน เนื้อหาของคลาสจะถูกดำเนินการในเวลาที่กำหนด ในการกำหนดคลาส P เราจำเป็นต้องเรียกเมธอด Q ซึ่งเราไม่สามารถทำได้เพราะยังไม่ได้กำหนดคลาส Q
เพื่อแก้ไขปัญหานี้ เราสามารถกำหนดคลาสแล้วเพิ่มคุณสมบัติในภายหลัง -
class P(object): pass class Q(object): pass P.q = Q.do_something() Q.p = P.do_something()
หากการโทร do_something แต่ละครั้งอาศัยการเรียกอื่นที่ดำเนินการไปแล้ว สิ่งนี้จะไม่ทำงาน เรายังต้องทำการเปลี่ยนแปลงเพิ่มเติมเพื่อแก้ไขปัญหา
คลาสมีปัญหาเหล่านี้เนื่องจากคำสั่งในระดับคลาส (q =Q.do_something()) ถูกดำเนินการในขณะที่กำหนดคลาส ไม่ใช่เมื่อคุณสร้างอินสแตนซ์ของคลาส
เราอาจทำคำจำกัดความของคลาสให้สมบูรณ์ในภายหลัง หลังจากที่ทั้งสองคลาสถูกกำหนดแล้ว นี่เป็นการพิสูจน์ว่า Python เป็นภาษาไดนามิก..