2010-01-25 24 views
8

ठीक है, मुझे रूथ के साथ प्यार में पड़ने वाले पाइथन प्रोग्रामर की सूची में जोड़ें लेकिन एक पिंगरिंग पिक्डिक्शन है।पाइथन सेटैटर के बराबर रूबी()

setattr(obj, 'attribute', value) 

जहां obj एक वस्तु उदाहरण है, विशेषता स्ट्रिंग के रूप वस्तु की विशेषताओं में से एक का नाम है, और मूल्य है: पोस्ट के बारे में Python's getattr तरह, मैं ऐसा करने का रूबी समकक्ष के लिए देख रहा हूँ उस वस्तु का मूल्य। बराबर कोड किया जा रहा है:

obj.attribute = value 

मैं यह संभव है यह सोचते कर रहा हूँ (अजगर में कुछ भी संभव अब रूबी में और भी आसान लगता है क्योंकि), लेकिन यह के प्रलेखन नहीं मिल रहा।

उत्तर

14

या तो obj.instance_variable_set("@instance_variable", value) या obj.send("instance_variable=", value)

पूर्व सीधे इंस्टेंस चर सेट करता है। उत्तरार्द्ध सेटटर विधि को कॉल करता है, जो निश्चित रूप से केवल एक काम करता है यदि एक सेटर विधि है, लेकिन दूसरी तरफ भी काम करता है यदि आपके पास एक सेटर विधि है जो वास्तव में केवल एक आवृत्ति चर सेट नहीं करता है (या उदाहरण नहीं सेट करता है बिल्कुल वैरिएबल)।

+2

एनबी: 'instance_variable_set' और' send' का पहला पैरामीटर भी प्रतीक हो सकता है – horseyguy

संबंधित मुद्दे