चलो कहते हैं कि मैं इस वर्ग को परिभाषित करते हैंसेटैटर और गेटैटर व्हाइटसाइट की अनुमति क्यों देता है? मैं तो जैसे गुण सेट कर सकते हैं</p> <pre><code>class A: pass a = A() </code></pre> <p>अब स्पष्ट रूप से:
a.x = 5
लेकिन setattr
के साथ, मैं a
गुण जो उनके नाम में खाली स्थान के होते हैं दे सकते हैं।
setattr(a, 'white space', 1)
setattr(a, 'new\nline', None)
dir(a)
'white space'
और 'new\nline'
शामिल हैं।
मैं .
ऑपरेटर का उपयोग इन विशेषताओं उपयोग नहीं कर सकते, क्योंकि यह एक SyntaxError
को जन्म देती है:
>>> a.white space
File "<interactive input>", line 1
a.white space
^
SyntaxError: invalid syntax
>>> a.new\nline
File "<interactive input>", line 1
a.new\nline
^
SyntaxError: unexpected character after line continuation character
मैं getattr
साथ कर सकते हैं लेकिन:
>>> getattr(a, 'white space')
1
>>> getattr(a, 'new\nline')
None
वहाँ इस कार्यक्षमता के पीछे एक कारण है? यदि ऐसा है, तो ये क्या है?
क्या हमें इसका उपयोग करना चाहिए, या पीईपी 8 में परिभाषित मानकों के अनुरूप होना चाहिए?
यह डैश और अन्य पात्रों को प्रत्यक्ष विशेषताओं के रूप में मान्य नहीं होने देता है। वास्तव में –
। विशेषता नाम केवल एक स्ट्रिंग है जो एक तीर कुंजी करता है। –