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