हमारे पास निम्न कोड है जो अजगर वर्गों के बीच परिपत्र निर्भरता को दर्शाता है।
class P(): q = Q().do_something(); def do_something(self): pass class Q(): p = P().do_something(); def do_something(self): pass
कक्षाओं के मामले में, कार्यों के विपरीत, एक वर्ग के शरीर को परिभाषा समय पर निष्पादित किया जाता है। कक्षा पी को परिभाषित करने के लिए, हमें वास्तव में एक क्यू विधि को कॉल करने की आवश्यकता है, जो हम नहीं कर सकते क्योंकि कक्षा क्यू अभी तक परिभाषित नहीं है।
इस पर काम करने के लिए, हम कक्षाओं को परिभाषित कर सकते हैं और उसके बाद गुण जोड़ सकते हैं -
class P(object): pass class Q(object): pass P.q = Q.do_something() Q.p = P.do_something()
यदि प्रत्येक do_something कॉल पहले से निष्पादित होने वाली दूसरी कॉल पर निर्भर करती है, तो यह काम नहीं करेगी। समस्या को ठीक करने के लिए हमें अभी भी और परिवर्तन करने की आवश्यकता है।
कक्षाओं में ये समस्याएँ होती हैं क्योंकि कक्षा स्तर पर निर्देश (q =Q.do_something ()) कक्षा को परिभाषित करते समय निष्पादित होते हैं, न कि जब आप कक्षा का एक उदाहरण बनाते हैं
दोनों वर्गों को परिभाषित करने के बाद, हम बाद में एक वर्ग की परिभाषा को पूरा कर सकते हैं। यह इस बात को साबित करता है कि पायथन एक गतिशील भाषा है..