Python'da Polimorfizm nedir? Örneklerle Açıklanan Polimorfizm

Yayınlanan: 2021-03-05

İçindekiler

Tanıtım

Python, üst düzey, yorumlanmış ve açık kaynaklı bir programlama dilidir. Keşifsel veri analizi, GUI programlama vb. gibi birçok görevde yardımcı olan kitaplıkları desteklediği için birçok programcı ve geliştirici arasında çok fazla odak kazanmıştır. Ayrıca python'da programlama çok ilginçtir.

Bu yazıda python'un ilginç bir özelliğini tartışacağız. O halde başlayalım!

Polimorfizm nedir?

Polimorfizm kelimesi, Yunanca poli (çok) ve morfizm (biçimler) kelimelerinden türetilmiştir. Bu, tek bir işlev adının veya yöntem adının birden çok biçimi olabileceği anlamına gelir. Ve bu, uygulamada kod tekrarından kaçınma isteğini yerine getirir.

Ancak python'daki polimorfizm, diğer programlama dillerindeki polimorfizmden biraz farklıdır. Java ve c++ gibi programlama dilleri derleme zamanı polimorfizmini destekler (yöntem aşırı yüklemesi). Yöntem aşırı yüklemesinde, birden çok yöntem aynı yöntem adına sahip olabilir ancak parametre imzalarında farklılık gösterebilir. Bu özellik python tarafından desteklenmemektedir. Birden çok yöntem aynı işleve sahipse, en yeni işlev uygulaması önceki işlev uygulamasını geçersiz kılar.

Fonksiyon Polimorfizmi

Python'daki fonksiyon polimorfizmi, iki kullanıcı tanımlı polimorfizm ve önceden tanımlanmış polimorfizm olarak kategorize edilebilir.

Aynı işlevi farklı bir parametre imzasıyla çağırmak için kullanıcı tanımlı polimorfizm uygulayabiliriz ve bu, python'da yöntem aşırı yüklemesinin kullanılamamasına küçük bir telafi olarak düşünülebilir. Örnek bir kod üzerinden gidelim

def mul (a,b,c= 1 ):
a*b*c döndür ;

yazdır(mul( 1 , 2 , 3 ))
yazdır(mul( 1 , 2 ))

Yukarıdaki kodda, geçirilen parametre sayısı eşit olmasa da her iki print ifadesi de aynı metoda atıfta bulunur. İkinci işlev çağrısında, c parametresine varsayılan 1 değeri atanır.

Benzer şekilde, python'da önceden tanımlanmış birkaç yöntem, tek bir yöntemin farklı veri türlerinin parametrelerini kabul edebileceği polimorfizm özellikleri sergiler. len() gibi yöntemler bu özelliği sergiler. Ve işte bunu gösteren kod.

print(len([ 1 , 2 , 3 , 4 ]))
print(len(( 1 , 2 , 3 , 4 )))
print(len( “piton” )))
print(len({ "anahtar1" : "değer1" , "anahtar2" : "değer2" }))

Yukarıdaki kodda, bir liste, demet, dize ve sözlük için aynı len() yöntemi kullanılır.

Ödeme: Gerçek Dünyada Python Uygulamaları

Operatör Aşırı Yüklemesi

'+' gibi bir operatör birden çok şekilde kullanılabilir. Örneğin, iki sayı, dize, liste vb. eklemek için kullanılabilir. Ve işte bunu gösteren kod.

l1=[ 1 , 2 , 3 ]
l2=[ 3 , 4 , 5 ]

n1= 2
n2= 3

s1= "merhaba"
s2= “orada”

yazdır(l+l1)
yazdır(s1+s2)
yazdır(n1+n2)

Yöntem Geçersiz Kılma

Yöntem geçersiz kılma da çalışma zamanı polimorfizmi olarak kabul edilir ve Java, c++ ve python gibi birçok dil tarafından desteklenir.

Bu özellik kalıtımla ilgilidir, python'daki bir alt sınıf, üst sınıfından üye işlevleri ve üye değişkenleri devralır. Ve ana sınıf yönteminin uygulanmasının ilgili olmadığını hissedersek, o zaman alt sınıfta bu yöntemi geçersiz kılabiliriz. Ve alt sınıftaki gereksinime göre üye işlevlerinin değiştirilmesi, yöntemi geçersiz kılma olarak adlandırılır.

sınıf iki tekerlekli :
def yakıt (öz):
print( “iki tekerlekli aracın çalışması için yakıt gerekir” )
def kapasitesi (öz):
print( “Bisikletler en fazla 2 kişi için uygundur” )

elektrikli bisiklet sınıfı (iki tekerlekli):
def yakıt (öz):
print( “pille çalışan elektrikli bisikletler” )
benzinli bisiklet sınıfı (iki tekerlekli):
def yakıt (öz):
print( “benzinli bisiklet benzinle çalışır” )
bisiklet=two_wheeler()
ebike=elektrik_bisiklet()
pbike=petrol_bike()

bisiklet.yakıt()
bisiklet.kapasite()
ebike.yakıt()
ebike.kapasite()
pbike.yakıt()
pbike.kapasite()

Yukarıdaki kodda, iki_tekerlekli ana sınıftır ve elektrik_bike, petrol_bisiklet alt sınıflardır. Ve fuel(), Capacity() yöntemleri, electric_bike ve petrol_bike alt sınıfları tarafından miras alınır. Şimdi, gerekirse yöntemlerin uygulamasını güncelleyebiliriz ve elektrik_bike sınıfı içinde fuel() yöntemini yeniden uyguladık, benzer şekilde petrol_bike sınıfında fuel() yöntemini yeniden uyguladık.

Örneğin, kodda ebike.fuel() "pille çalışan elektrikli bisikletler" yazdırır ve pbike.fuel() benzinle çalışan benzinli bisikletleri yazdırır".

Sınıf Yöntemlerinde Polimorfizm

Python, farklı sınıfların aynı yöntem adına sahip olmasına izin verir ve bu, polimorfizm özelliği kapsamında gelir. Ve yöntemin çağrılması, yöntemi çağırmak için kullandığımız nesneye dayanır.

sınıf bisiklet :
def yakıt (öz):
print( “bisikletin yakıta ihtiyacı yoktur!” )
def kapasitesi (öz):
print( “bisikletler tek kişi binmek için uygundur” )

elektrikli bisiklet sınıfı :
def yakıt (öz):
print( “pille çalışan elektrikli bisikletler” )
def kapasitesi (öz):
print( “Elektrikli bisiklet maksimum 2 kişiliktir” )

sınıf benzin_bike :
def yakıt (öz):
print( “benzinli bisiklet benzinle çalışır” )
def kapasitesi (öz):
print( “Benzinli bisikletler maksimum 2 kişiliktir” )

ekobisiklet=bisiklet()
ebike=elektrik_bisiklet()
pbike=petrol_bike()
l=[ecobike,ebike,pbike]

l' deki obj için :
nesne.yakıt()
nesne.kapasite()

Yukarıdaki kodda bike, electric_bike ve petrol_bike olmak üzere üç sınıftan üç nesne oluşturduk. Ve üç sınıfın tümü aynı yöntem adlarına sahiptir. Şimdi, yöntemi çağırmak için kullanılan nesnenin türüne göre hangi yöntemin çağrılması gerektiğine karar vermek derleyicinin görevidir.

Örneğin, ecobike.fuel() bisiklet sınıfının fuel() yöntemini çağıracak ve ebike.fuel(), electric_bike sınıfının fuel() yöntemini çağıracaktır. Tüm bu nesneleri bir listeye ekliyoruz ve her yinelemede aynı işlev adlarını arayacağız ancak yöntemi çağıran nesnenin türü değişecek. İlk iterasyonda bisiklet sınıfının metotları ve daha sonraki iterasyonlarda elektrikli_bike metotları, petrol_bike olarak adlandırılır.

Okuyun: Python Proje Fikirleri ve Konuları

Çözüm

Bu yazıda, polimorfizmin ne anlama geldiğini anladık, metot aşırı yüklemesi durumunda python'un nasıl farklı olduğunu tartıştık. Operatör aşırı yüklemesi, fonksiyon polimorfizmi, metot geçersiz kılma ve sınıf metotlarında polimorfizm gibi pitonlardaki çeşitli polimorfizm olasılıklarının gösterimlerini inceledik.

Artık python'daki polimorfizmin farkında olduğunuza göre, bir sonraki python kodunuzu tüm bu özellikleri kullanarak uygulayın!

Veri bilimi hakkında bilgi edinmek istiyorsanız, IIIT-B & upGrad'ın çalışan profesyoneller için oluşturulan ve 10'dan fazla vaka çalışması ve proje, uygulamalı uygulamalı atölye çalışmaları, endüstri uzmanlarıyla mentorluk sunan Veri Biliminde PG Diplomasına göz atın, 1- endüstri danışmanlarıyla bire bir, en iyi firmalarla 400+ saat öğrenim ve iş yardımı.

Geleceğin Kariyerine Hazırlanın

VERİ BİLİMİNDE YÜKSELTME VE IIIT-BANGALORE'NİN PG DİPLOMASI
ŞİMDİ KAYDOLUN @ YÜKSELTME