2012-08-11 16 views
5

मैंने 2010 में जेआरबी पर एक समान समस्या देखी, जब हम जरुबी में जावा स्रोत कोड पर ओवरलोड किए गए एक विधि को ओवरराइड करने का प्रयास करेंगे। हम ज्योथन में इस से कैसे निपट सकते हैं? अधिक विशेष रूप से, मैं उन विधियों में से एक के लिए कैसे निर्दिष्ट कर सकता हूं जिन्हें अधिभारित किया जा सकता है और शेष को अनदेखा कर सकता है या मैं उन सभी को कैसे ओवरराइड कर सकता हूं?उसी नाम के साथ ज्योथन ओवरराइड विधि

धन्यवाद

+0

क्या आप एक ओवरलोडेड विधि को कॉल करने का प्रयास कर रहे हैं, या पाइथन में एक को परिभाषित कर रहे हैं? – delnan

+0

मैं जावा में अधिभारित एक विशिष्ट विधि को कॉल करने की कोशिश कर रहा हूं और मैं ज्योथन में ओवरराइड कर रहा हूं। –

उत्तर

1

अजगर विधि से अधिक भार का समर्थन नहीं करता (लेकिन यह समर्थन मूलभूत मूल्यों करता है)।

def my_function(paramA, paramB = None): 
    pass 

चूंकि ज्योथन केवल एक पायथन कार्यान्वयन है, इसलिए मैं वही सत्य मानता हूं।

+1

दाएं ... क्या आप कुछ और विवरणों में जा सकते हैं कि मैं डिफ़ॉल्ट मानों का उपयोग कैसे कर सकता हूं ताकि निर्दिष्ट किया जा सके कि कौन सी अधिभारित विधि है? धन्यवाद –

0

ज्योथन से एक विशिष्ट जावा विधि को कॉल करने के लिए, आपको प्रकारों को बहुत बारीकी से मिलना पड़ सकता है, या यहां तक ​​कि बिल्कुल भी।

जैथन कुछ type coercion करता है, लेकिन ऐसी स्थितियां हैं जिनमें यह आपकी इच्छित विधि का चयन नहीं करती है।

विशिष्ट आधार वर्गों पर सार्वजनिक विधियों को कॉल करने के लिए आप BaseClass.method(self, ...) का उपयोग कर सकते हैं। संरक्षित तरीकों को कॉल करने के लिए आपको prefix विधि नाम जैसे self.super__method(...) होना चाहिए।