नीचे दिए गए उदाहरण में, विशेषता x
वस्तु के स्लॉट से पहुँचा जा सकता है भले ही x
__dict__
में मौजूद है (यह एक ठेठ या शायद उपयोगी मामला नहीं है, लेकिन मैं उत्सुक हूँ) है:पायथन में विशेषता का उपयोग: पहला स्लॉट, फिर __dict__?
>>> class C(object):
... __slots__ = 'x'
...
>>> class D(C):
... pass
...
>>> obj = D()
>>> obj.x = 'Stored in slots'
>>> obj.__dict__
{}
>>> obj.__dict__['x'] = 'stored in __dict__'
>>> obj.x
'Stored in slots'
है पहुंच का यह आदेश (पहले स्लॉट) एक दस्तावेजी व्यवहार? या बस एक कार्यान्वयन विस्तार?
मेरा मानना है कि इसे उद्धृत किया जाना चाहिए ([वर्णनकर्ताओं को कार्यान्वित करना] से [http://docs.python.org/2/reference/datamodel.html#implementing-descriptors)): "वर्णनकर्ता या तो होना चाहिए मालिक के वर्ग शब्दकोश या अपने माता-पिता के लिए कक्षा शब्दकोश में "। –
@PavelAnossov: सुनिश्चित नहीं है कि स्लॉट को समझने के लिए क्या जोड़ा जाएगा। स्लॉट विशेषताओं को वर्ग पर वर्णक के रूप में लागू किया जाता है, और डेटा वर्णनकर्ता उदाहरण के पहले '__dict__' मान आते हैं। यह व्यवहार करने के लिए पर्याप्त है, है ना? –
@PavelAnossov: हां, कभी-कभी लोग इस बात से उलझन में हैं कि वर्णनकर्ताओं को कहाँ देखा जाता है, लेकिन यह यहां पर नहीं है। –