खोज…


ऑपरेटर ओवरलोडिंग

अजगर में सब कुछ एक वस्तु है। प्रत्येक वस्तु में कुछ विशेष आंतरिक विधियाँ होती हैं जिनका उपयोग वह अन्य वस्तुओं के साथ बातचीत करने के लिए करता है। आम तौर पर, ये विधियाँ __action__ नामकरण सम्मेलन का अनुसरण करती हैं। सामूहिक रूप से, इसे पायथन डेटा मॉडल कहा जाता है।

आप इनमें से किसी भी तरीके को ओवरलोड कर सकते हैं। यह आमतौर पर पायथन में ऑपरेटर ओवरलोडिंग में उपयोग किया जाता है। नीचे पायथन के डेटा मॉडल का उपयोग कर ऑपरेटर के ओवरलोडिंग का एक उदाहरण है। Vector क्लास दो वेरिएबल्स का एक सिंपल वेक्टर बनाता है। हम ऑपरेटर ओवरलोडिंग का उपयोग करके दो वैक्टर के गणितीय संचालन के लिए उचित समर्थन जोड़ेंगे।

class Vector(object):
    def __init__(self, x, y):
        self.x = x
        self.y = y

    def __add__(self, v):
        # Addition with another vector.
        return Vector(self.x + v.x, self.y + v.y)

    def __sub__(self, v):
        # Subtraction with another vector.
        return Vector(self.x - v.x, self.y - v.y)

    def __mul__(self, s):
        # Multiplication with a scalar.
        return Vector(self.x * s, self.y * s)

    def __div__(self, s):
        # Division with a scalar.
        float_s = float(s)
        return Vector(self.x / float_s, self.y / float_s)

    def __floordiv__(self, s):
        # Division with a scalar (value floored).
        return Vector(self.x // s, self.y // s)

    def __repr__(self):
        # Print friendly representation of Vector class. Else, it would
        # show up like, <__main__.Vector instance at 0x01DDDDC8>.
        return '<Vector (%f, %f)>' % (self.x, self.y, )

a = Vector(3, 5)
b = Vector(2, 7)

print a + b # Output: <Vector (5.000000, 12.000000)>
print b - a # Output: <Vector (-1.000000, 2.000000)>
print b * 1.3 # Output: <Vector (2.600000, 9.100000)>
print a // 17 # Output: <Vector (0.000000, 0.000000)>
print a / 17 # Output: <Vector (0.176471, 0.294118)>

उपरोक्त उदाहरण बुनियादी संख्यात्मक ऑपरेटरों के ओवरलोडिंग को दर्शाता है। एक व्यापक सूची यहां मिल सकती है



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow