मुझे यह समझने में समस्या है कि क्लास/इंस्टेंस चर कैसे पाइथन में काम करते हैं। मैं समझता हूँ कि जब मैं इस कोड की कोशिश सूची चर एक वर्ग चर हो रहा है नपायथन क्लास इंस्टेंस वैरिएबल और क्लास वेरिएबल्स
class testClass():
list = []
def __init__(self):
self.list.append('thing')
p = testClass()
print p.list
f = testClass()
print f.list
उत्पादन:
['thing']
['thing', 'thing']
और यह एक उदाहरण चर हो रहा है जब मैं यह कर
class testClass():
def __init__(self):
self.list = []
self.list.append('thing')
p = testClass()
print p.list
f = testClass()
print f.list
उत्पादन:
['thing']
['thing']
बहुत धन्यवाद
जॉन
यदि मैं सही ढंग से समझता हूं, तो आप पाइथन के वाक्यविन्यास के बारे में विशेष डिजाइन निर्णय के पीछे तर्क के लिए पूछ रहे हैं। ऐसे प्रश्नों के लिए, सबसे अच्छा जवाब या तो "क्योंकि यह भाषा की भावना के साथ फिट बैठता है", या अधिक स्पष्ट रूप से: "अपने निर्माता से पूछें"। – Xion
ठीक है तो वैरिएबल डिफ़ॉल्ट रूप से क्लास वेरिएबल्स हैं, जहां मेरा भ्रम है, जो मेरा प्रश्न होना चाहिए था, क्लास वेरिएबल्स –
@jonathantopf नहीं के लिए चर वैरिएबल करें, चर डिफ़ॉल्ट रूप से कक्षा चर नहीं हैं। पायथन में आप varables घोषित नहीं करते हैं। उस मामले के लिए, वे वास्तव में चर नहीं हैं (पायथन एक _variableless_ lanuage है), बस नाम। और आप नामों की घोषणा या आकलन नहीं करते हैं, तो आप उन्हें किसी ऑब्जेक्ट पर _bind_ करते हैं। और रनटाइम में प्रत्येक ऑब्जेक्ट में नाम-से-ऑब्जेक्ट का शब्दकोश होता है। और यहां तक कि यदि दो वस्तुएं एक ही कक्षा के हैं, तो उनके पास बहुत अलग शब्दकोश हो सकते हैं। – rodrigo