2011-04-11 9 views
121

के भीतर पायथन कॉल फ़ंक्शन मेरे पास यह कोड है जो दो निर्देशांकों के बीच की दूरी की गणना करता है। दोनों कार्य एक ही कक्षा के भीतर हैं।कक्षा

हालांकि मैं फ़ंक्शन फ़ंक्शन isNear में फ़ंक्शन कैसे कॉल करूं?

def distToPoint(self, p): 
    """ 
    Use pythagoras to find distance 
    (a^2 = b^2 + c^2) 
    """ 
    ... 

def isNear(self, p): 
    distToPoint(self, p) 
    ... 
+19

कोशिश: self.distToPoint (पी) – momeara

उत्तर

220

चूंकि ये सदस्य कार्य हैं, उदाहरण के लिए इसे self पर सदस्य फ़ंक्शन के रूप में कॉल करें।

def isNear(self, p): 
    self.distToPoint(p) 
    ... 
+1

लेकिन हो सावधान self.foo() विधि संकल्प आदेश जो एक अलग वर्ग में एक समारोह को हल कर सकते हैं का प्रयोग करेंगे। –

+0

क्या होता है यदि हम स्वयं का उपयोग न करें? और सीधे distToPoint (पी) पर कॉल करें? –

+0

@ मार्लोन एबेकून "स्वयं" तर्क गायब होगा –

25

क्योंकि distToPoint अपने वर्ग के भीतर है कि काम नहीं करता है, तो आप classname अवश्य लगा दें करने की जरूरत है अगर आप इस तरह यह उल्लेख करने के लिए, चाहते हैं: classname.distToPoint(self, p)। हालांकि, आपको ऐसा नहीं करना चाहिए। ऐसा करने का एक बेहतर तरीका क्लास इंस्टेंस (जो क्लास विधि का पहला तर्क है) के माध्यम से विधि को संदर्भित करना है, जैसे: self.distToPoint(p)