+=
अजगर में ऑपरेटर सूची में अप्रत्याशित रूप से काम कर रहा है। क्या कोई बता सकता है कि यहां क्या चल रहा है?
class foo:
bar = []
def __init__(self,x):
self.bar += [x]
class foo2:
bar = []
def __init__(self,x):
self.bar = self.bar + [x]
f = foo(1)
g = foo(2)
print f.bar
print g.bar
f.bar += [3]
print f.bar
print g.bar
f.bar = f.bar + [4]
print f.bar
print g.bar
f = foo2(1)
g = foo2(2)
print f.bar
print g.bar
आउटपुट
[1, 2]
[1, 2]
[1, 2, 3]
[1, 2, 3]
[1, 2, 3, 4]
[1, 2, 3]
[1]
[2]
foo += bar
लगता है कि कक्षा के हर उदाहरण को प्रभावित करता है, जबकि मुझे foo = foo + bar
लगता है कि जिस तरह से मैं व्यवहार करने की उम्मीद करूंगा उससे व्यवहार होगा।
+=
ऑपरेटर एक "यौगिक असाइनमेंट ऑपरेटर" कहा जाता है।
+
सरणियों पर ऑपरेटर का उपयोग करने की अनुमति भी नहीं देंगी । मुझे लगता है कि यह इस मामले में सही समझ में आता है जो आगे +=
बढ़ेगा।