मैं एक वर्ग है जो कई विशेषताओं से संबंधित हैं, उदाहरण के लिए: यदि मैं सामान्य रूप से है कि होगा कोई समस्या नहीं एक वस्तु बनानेक्लास ऑब्जेक्ट में, ऑटो अपडेट कैसे करें?
class SomeClass:
def __init__(self, n=0):
self.list = range(n)
self.listsquare = [ x**2 for x in self.list ]
,
a = SomeClass(10)
साथ मैं 2 सूचियों मिलेगा, a.list
और a.listsquare
।
अब अगर मैं पहली बार एक खाली वस्तु बनाने के लिए, और यह करने के लिए एक विशेषता प्रदान करना चाहते हैं, मैं अन्य विशेषताओं स्वचालित रूप से अपडेट किया जाना चाहते हैं, उदाहरण के लिए अगर मैं कर
b = SomeClass()
b.list = range(5,10)
मैं b.listsquare
स्वचालित रूप से होना चाहता हूँ अपडेट किया गया, और अन्य तरीकों के आसपास (b.listsquare
असाइन करें और ऑटो अपडेट b.list
)। क्या यह संभव है? कक्षा इस के लिए सही विकल्प है?
आप सभी को धन्यवाद, लेकिन मैं सभी अलग-अलग उत्तरों से पूरी तरह से अभिभूत हूं। क्या कोई भी पूरा समाधान दे सकता है ताकि मैं अपना खुद का लिख सकूं?
- अगर मैं
a = Foo(3)
करते हैं, मैंa.length = 3
,a.list = [0, 1, 2]
,a.listsquare = [0, 1, 4]
:मैं 3 गुण
length
,list
औरlistsquare
ऐसी है कि के साथ एक कक्षाFoo
को प्राप्त करना चाहते हैं। - यदि मैं
b = Foo().list = [5, 6]
करता हूं, तो मुझेb.length = 2
,b.listsquare = [25, 36]
मिलता है। - यदि मैं
c = Foo().listsquare = [4, 9]
करता हूं, तो मुझेc.length = 2
,c.list = [2, 3]
मिलता है।
कोड आप हमें काम नहीं करता दे दिया है। कक्षाओं को 'वर्ग' द्वारा परिभाषित नहीं किया जाता है 'def' और 'def __init __ (self, ...)' विधि के माध्यम से प्रारंभ किया जाता है। आपने 1 फ़ंक्शन को 'स्वयं' नामक एक आवश्यक पैरा और 'वैकल्पिक' नामक 1 वैकल्पिक पैरा के साथ परिभाषित किया है। जब आप SomeClass (10) को कॉल करते हैं, तो फ़ंक्शन 10 ऑब्जेक्ट को 'सूची' असाइन करने का प्रयास करता है और विफल रहता है। - ओह, ऐसा लगता है कि प्रश्न को दोबारा सुधार दिया जा रहा है ... तो कभी भी बुरा मत मानो। – tdelaney
क्षमा करें, मैंने सुधार किए हैं। मैं अभी इसके साथ बहुत परिचित नहीं हूँ। – LWZ