में गतिशील विशेषता रही मेरे पास है और एक छद्म या विशेष विशेषता है कि तीन अलग अलग तरीकों से नामित किया जा सकता है के साथ वस्तु:अजगर
(नोट मैं कोड जो वस्तु उत्पन्न करता है को नियंत्रित नहीं करते) (निर्भर करता है जो एक सेट है) विशेषताओं में मूल्य बिल्कुल वैसा ही है, और मुझे लगता है कि प्राप्त करने के लिए आगे की प्रक्रिया के लिए की जरूरत है, तो डेटा स्रोत की निर्भर करता है, मैं की तरह कुछ हो सकता है:
>>> obj.a
'value'
>>> obj.b
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: Obj instance has no attribute 'b'
>>> obj.c
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: Obj instance has no attribute 'c'
या
>>> obj.a
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: Obj instance has no attribute 'a'
>>> obj.b
'value'
>>> obj.c
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: Obj instance has no attribute 'c'
या
>>> obj.a
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: Obj instance has no attribute 'a'
>>> obj.b
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: Obj instance has no attribute 'b'
>>> obj.c
'value'
मैं 'value'
और दुर्भाग्य से __dict__
संपत्ति हो रही है कि वस्तु में मौजूद नहीं है में दिलचस्पी रखता हूँ। तो मैं उस मूल्य को प्राप्त करने के लिए क्या कर रहा था, बस getattr
कॉल का एक गुच्छा था।
>>> g = lambda o, l: getattr(o, l[0], getattr(o, l[1], getattr(o, l[2], None)))
>>> g(obj, ('a', 'b', 'c'))
'value'
अब, मुझे पता है कि यह करने के लिए एक बेहतर तरीका है कि क्या वहाँ चाहते हैं: यह मानते हुए कि संभावनाओं केवल तीन हैं, कोड इस तरह देखा? मैं कर रहा हूँ के रूप में 100% आश्वस्त मैं क्या किया है :)
अग्रिम धन्यवाद
बस जांचने के लिए - 'get_value()' (या समान) नहीं है या जैसा कि आप 'डेटा के स्रोत के आधार पर' उल्लेख करते हैं - कोई मौजूदा (या व्युत्पन्न मैपिंग) नहीं है स्रोत -> विशेषता का नाम? –