Jump to content

Python

  • entries
    53
  • comments
    0
  • views
    405

Operator Overloading


Doğuhan ELMA

46 views

Operator Overloading, nesne yönelimli programlamada kullanılan bir tekniktir. Bu teknik, önceden tanımlanmış operatörlerin davranışlarını değiştirmemizi sağlar. Yani, operatörlerin bir sınıfın örnekleri üzerinde nasıl çalıştığını özelleştirebiliriz.

Python'da, operatör overloading, özel metotlar (special methods) veya magic metotlar olarak da bilinen metotları tanımlayarak gerçekleştirilir. Bu metotlar, çift alt çizgi (__) ile başlar ve biter. Örneğin, __add__, __sub__, __mul__, __truediv__ gibi.

Bu metotları bir sınıfta tanımladığınızda, o sınıfın örnekleri üzerinde ilgili operatörleri kullanabilirsiniz ve Python otomatik olarak ilgili özel metotları çağırır.

Örneğin, bir Vector sınıfı oluşturabiliriz ve __add__ metotunu tanımlayabiliriz:

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

    def __add__(self, other):
        if isinstance(other, Vector):
            return Vector(self.x + other.x, self.y + other.y)
        else:
            raise TypeError("Both operands must be Vectors")

v1 = Vector(1, 2)
v2 = Vector(3, 4)
v3 = v1 + v2  # Vector(4, 6)

 

Bu örnekte, Vector sınıfının __add__ metodu, iki Vector örneğinin toplanmasını sağlar. + operatörünü kullandığımızda, Python otomatik olarak __add__ metotunu çağırır.

Benzer şekilde, __sub__ (çıkarma), __mul__ (çarpma), __truediv__ (gerçek bölme), __floordiv__ (taban bölme), __mod__ (modülüs), __pow__ (üs alma) gibi diğer aritmetik operatörlerin davranışlarını da özelleştirebiliriz.

Ayrıca, __eq__ (eşitlik), __ne__ (eşit olmama), __lt__ (küçüklük), __gt__ (büyüklük), __le__ (küçük eşitlik), __ge__ (büyük eşitlik) gibi karşılaştırma operatörlerinin davranışlarını özelleştirebiliriz.

Operator overloading, bir sınıfın örneklerinin doğal ve sezgisel bir şekilde çalışmasını sağlar ve kodu daha okunabilir ve anlaşılır hale getirir. Ancak, operator overloading'in yanlış kullanılması kodu karmaşık ve anlaşılması zor hale getirebilir, bu yüzden dikkatli kullanılmalıdır.

1.jpg

0 Comments


Recommended Comments

There are no comments to display.

Guest
Add a comment...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...