नीचे कक्षा बी में मैं कक्षा 12 में __set__
फ़ंक्शन चाहता था जब भी आप B().a
पर कोई मान निर्दिष्ट करते हैं। इसके बजाय, मान को B().a
पर मान सेट करने के साथ B().a
ओवरराइट करें। क्लास सी C().a
को सही तरीके से काम करता है, लेकिन मैं प्रत्येक उपयोगकर्ता वर्ग के लिए ए का एक अलग उदाहरण चाहता था, यानी मैं अन्य सभी मामलों में 'ए' बदलने के लिए सी() के एक उदाहरण में 'ए' को बदलना नहीं चाहता हूं। मैंने समस्या को समझने में मदद के लिए कुछ परीक्षण लिखे हैं। क्या आप मुझे कक्षा को परिभाषित करने में मदद कर सकते हैं जो test1 और test2 दोनों को पारित करेगा?__init__ फ़ंक्शन में एक वर्णक वर्ग की घोषणा क्यों वर्णनकर्ता कार्यक्षमता को तोड़ती है?
class A(object):
def __set__(self, instance, value):
print "__set__ called: ", value
class B(object):
def __init__(self):
self.a = A()
class C(object):
a = A()
def test1(class_in):
o = class_in()
o.a = "test"
if isinstance(o.a, A):
print "pass"
else:
print "fail"
def test2(class_in):
o1, o2 = class_in(), class_in()
if o1.a is o2.a:
print "fail"
else:
print "pass"
ठीक है, मैं उस – user83753
के साथ रह सकता हूं दूसरे विचार पर, शायद मैं इसके साथ नहीं रह सकता। मेरे आवेदन में मैं सदस्य कार्यों को ए में रखना चाहता हूं जो मालिक वर्ग की स्थिति पर भी निर्भर करता है। तो उदाहरण के लिए: स्वामी (राज्य जानकारी) स्वामी.ए = डेटा स्वामी.ए.फू() foo मालिक से राज्य की जानकारी कैसे प्राप्त करता है? – user83753
@ अज्ञात (google): ओह, इसके लिए आप डेटा को इंस्टेंस पर ही स्टोर करते हैं। तो आप इसे तरीकों से ला सकते हैं। – nosklo