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.
0 Comments
Recommended Comments
There are no comments to display.