अजगर हमें, उदाहरण/वर्ग विशेषता पर कई संभावनाएं प्रदान करता है उदाहरण के लिए:पाइथन विशेषता क्या प्राप्त करती है और ऑर्डर सेट करती है?
- सीधी पहुँच
a.foo
- भीतरी dict:
class A(object): def __init__(self): self.foo = "hello" a = A()
पहुँच के लिए कई तरीके हैं/
self.foo
का मूल्य बदलa.__dict__['foo']
a.__get__
औरa.__set__
प्राप्त करें और सेट करें, निश्चित रूप से दो पूर्व-परिभाषित विधियां हैं।- getAttribute
a.__getattribute__
__getattr__
और__setattr__
- शायद अधिक।
स्रोत कोड पढ़ने के दौरान, मैं हमेशा उनके अंतिम पहुंच आदेश का खो गया हूं? जब मैं a.foo
का उपयोग करता हूं, तो मुझे कैसे पता चलेगा कि वास्तव में कौन सी विधि/विशेषता कहा जाएगा?
1. 'foo' एक * आवृत्ति विशेषता * है, न कि क्लास विशेषता। 2. चूंकि यह '@ संपत्ति' (या अन्य वर्णनकर्ता नहीं)' __get__' और '__set__' शामिल नहीं होगा। – jonrsharpe
उदाहरण के लिए '__getattr__' बनाम' __getattribute__', देखें http://stackoverflow.com/q/3278077/3001761 – jonrsharpe