Polimorfizm Python ÖRNEKLERLE

⚡ Akıllı Özet

Polimorfizm Python Tek bir arayüzün farklı türdeki nesnelerle çalışmasına olanak tanır, böylece aynı yöntem veya operatör nesneye bağlı olarak farklı davranır. Bu durum, operatör aşırı yüklemesi, yerleşik fonksiyonlar, kullanıcı tanımlı yöntemler ve kalıtım yoluyla ortaya çıkar. Python programları.

  • 🔘 Tanım: Polimorfizm, "çoklu biçimler" anlamına gelir ve bir arayüzün farklı veri türleri veya sınıflar üzerinde işlem yapmasına olanak tanır.
  • ☑️ OperaTor aşırı yüklenmesi: + operatörü sayıları toplarken aynı zamanda dizeleri birleştirir; bu da operatör polimorfizmini gösterir.
  • Yerleşik işlevler: len() gibi fonksiyonlar, dizeler, listeler ve sözlükler üzerinde aynı şekilde çalışır.
  • 🧪 Kullanıcı tanımlı yöntemler: Sınıflar, farklı şekiller için area() ve perimeter() gibi aynı metot adlarını paylaşabilir.
  • Kalıtım: Metot geçersiz kılma, alt sınıfın üst sınıfın metodunu çalışma zamanında yeniden tanımlamasına olanak tanır.
  • 🤖 Yapay zekanın önemi: Makine öğrenimi kütüphaneleri, fit() ve forward() gibi paylaşılan arayüzleri modeller arasında yeniden kullanır.

Polimorfizm Python

Polimorfizm nedir?

Polimorfizm, birçok farklı biçimde ortaya çıkan bir durum olarak tanımlanabilir. Bu bir kavramdır Python programlamada tanımlanan bir nesne Python farklı şekillerde kullanılabilir. Programcının türetilmiş bir sınıfta birden fazla yöntem tanımlamasına olanak tanır ve ana sınıfta mevcut olanla aynı ada sahiptir. Bu tür senaryolar, yöntemin aşırı yüklenmesini destekler Python.

Polimorfizm Operaları

Bir operatör Python matematiksel ve diğer birçok programlama görevini gerçekleştirmeye yardımcı olur. Örneğin, '+' operatörü iki tamsayı türü arasında toplama işlemi yapmaya yardımcı olur Pythonve aynı şekilde, aynı operatör dizeleri birleştirmeye yardımcı olur Python programlama.

+ (artı) örneğini ele alalım Içinde operatör Python Polimorfizmin bir uygulamasını görüntülemek için Python Aşağıda gösterildiği gibi:

Python Code:

p = 55
q = 77
r = 9.5
g1 = "Guru"
g2 = "99!"
print("the sum of two numbers",p + q)
print("the data type of result is",type(p + q))
print("The sum of two numbers",q + r)
print("the data type of result is", type (q + r))
print("The concatenated string is", g1 + g2)
print("The data type of two strings",type(g1 + g2))

Çıktı:

the sum of two numbers 132
the data type of result is <class 'int'>

The sum of the two numbers 86.5
the data type of result is <class 'float'>

The concatenated string is Guru99!
The data type of two strings <class 'str'>

Yukarıdaki örnek aynı zamanda operatörün aşırı yüklenmesine örnek olarak da değerlendirilebilir.

Kullanıcı tanımlı yöntemlerde çok biçimlilik

Kullanıcı tanımlı bir yöntem Python programlama dili kullanıcının oluşturduğu yöntemlerdir ve işlev adıyla birlikte def anahtar sözcüğü kullanılarak bildirilir.

Polimorfizm Python programlama dili, yöntemin aşırı yüklenmesi ve geçersiz kılınması yoluyla elde edilir. Python def anahtar kelimesini içeren ve hem alt hem de üst sınıfta aynı adı taşıyan yöntemleri tanımlar.

Aşağıda gösterildiği gibi şu örneği ele alalım: –

Python Code:

from math
import pi
class square:
    def __init__(self, length):
    self.l = length
def perimeter(self):
    return 4 * (self.l)
def area(self):
    return self.l * self.l
class Circle:
    def __init__(self, radius):
    self.r = radius
def perimeter(self):
    return 2 * pi * self.r
def area(self):
    return pi * self.r * * 2
# Initialize the classes
sqr = square(10)
c1 = Circle(4)
print("Perimeter computed for square: ", sqr.perimeter())
print("Area computed for square: ", sqr.area())
print("Perimeter computed for Circle: ", c1.perimeter())
print("Area computed for Circle: ", c1.area())

Çıktı:

Perimeter computed for square:  40
Area computed for square:  100
Perimeter computed for Circle:  25.132741228718345
Area computed for Circle:  50.26548245743669

Yukarıdaki kodda daire ve kare sınıflarında tanımlanmış, çevre ve alan olmak üzere iki adet kullanıcı tanımlı yöntem bulunmaktadır.

Yukarıda gösterildiği gibi, hem daire sınıfı hem de kare sınıfı, gerekli çıktıyı sağlamak için Polimorfizm karakteristiğini gösteren aynı yöntem adını çağırır.

Fonksiyonlarda Polimorfizm

Yerleşik işlevler Python çeşitli veri türlerini yürütmek için tasarlanmış ve uyumlu hale getirilmiştir. İçinde Python`len()` fonksiyonu, temel yerleşik fonksiyonlardan biridir.

Bu fonksiyon, liste, demet, dize ve sözlük gibi çeşitli veri türleri üzerinde çalışır. `len()` fonksiyonu, bu veri türleriyle uyumlu kesin bilgiler döndürür.

Aşağıdaki şekil Polimorfizmin nasıl uygulanabileceğini göstermektedir Python yerleşik işlevlerle ilgili olarak: –

Fonksiyonlarda Polimorfizm

Aşağıdaki program Polimorfizmin uygulamasını göstermeye yardımcı olur Python: -

Python Code:

print ("The length of string Guru99 is ",len("Guru99"))
print("The length of list is ",len(["Guru99","Example","Reader"]))
print("The length of dictionary is ",len({"Website name":"Guru99","Type":"Education"}))

Çıktı:

The length of string Guru99 is 6
The length of the list is 3
The length of the dictionary is 2

Fonksiyonlarda Polimorfizm

Yukarıdaki örnekte, len() fonksiyonu Python sırasıyla dize, liste ve sözlük veri türleri için Polimorfizm gerçekleştirir.

Polimorfizm ve Kalıtım

Miras Python tanımlanan bir alt sınıfın, içinde mevcut olan başka bir temel sınıftan özellikleri devraldığı programlama konsepti olarak tanımlanabilir. Python.

İki anahtar var Python yöntem geçersiz kılma ve yöntem aşırı yükleme olarak adlandırılan kavramlar.

  • Yöntem aşırı yüklemesinde, Python Belirli bir kod parçasında farklı işlevleri gerçekleştirmek veya yürütmek için aynı ada sahip yöntemler oluşturma özelliğini sağlar. Yöntemlerin aşırı yüklenmesine izin verir ve bunları daha basit terimlerle farklı görevleri gerçekleştirmek için kullanır.
  • Yöntem geçersiz kılma'da, Python ebeveyn ve çocuk sınıflarında benzer adı paylaşan değeri geçersiz kılar.

Aşağıda gösterildiği gibi Polimorfizm ve kalıtımın aşağıdaki örneğini ele alalım: –

Python Code:

class baseclass:
    def __init__(self, name):
    self.name = name
def area1(self):
    pass
def __str__(self):
    return self.name
class rectangle(baseclass):
    def __init__(self, length, breadth):
    super().__init__("rectangle")
self.length = length
self.breadth = breadth
def area1(self):
    return self.length * self.breadth
class triangle(baseclass):
    def __init__(self, height, base):
    super().__init__("triangle")
self.height = height
self.base = base
def area1(self):
    return (self.base * self.height) / 2
a = rectangle(90, 80)
b = triangle(77, 64)
print("The shape is: ", b)
print("The area of shape is", b.area1())
print("The shape is:", a)
print("The area of shape is", a.area1())

Çıktı:

The shape is: a triangle
The area of a shape is 2464.0

The shape is: a rectangle
The area of a shape is 7200

Yukarıdaki kodda yöntemler, init yöntemi ve alan1 yöntemiyle tanımlanan aynı ada sahiptir. Kare ve dikdörtgen sınıfının nesnesi daha sonra farklı görevleri gerçekleştirmek ve kare ve dikdörtgen alanının çıktısını sağlamak için iki yöntemi çağırmak için kullanılır.

Sınıf Yöntemleriyle Polimorfizm

MKS Python programlama, programcıların sınıf yöntemleriyle Polimorfizm ve yöntem aşırı yüklemesine ulaşmasını sağlar. İçindeki farklı sınıflar Python genelinde aynı adla bildirilen yöntemlere sahip olabilir. Python kodu.

In Pythoniki farklı sınıf tanımlanabilir. Bunlardan biri alt sınıf olabilir ve nitelikleri ana sınıf olarak adlandırılan başka bir tanımlanmış sınıftan türetir.

Aşağıdaki örnek, sınıf yöntemleriyle Polimorfizm kavramını göstermektedir: –

Python Code:

class amazon:
    def __init__(self, name, price):
    self.name = name
self.price = price
def info(self):
    print("This is product and am class is invoked. The name is {self.name}. This costs {self.price} rupees.")
class flipkart:
    def __init__(self, name, price):
    self.name = name
self.price = price
def info(self):
    print(f "This is product and fli class is invoked. The name is {self.name}. This costs {self.price} rupees.")
FLP = flipkart("Iphone", 2.5)
AMZ = amazon("Iphone", 4)
for product1 in (FLP, AMZ):
    product1.info()

Çıktı:

This is a product, and fli class is invoked. The name is iPhone, and this costs 2.5 rupees.
This is a product, and am class is invoked. The name is iPhone, and this costs 4 rupees.

Yukarıdaki kodda, flipkart ve amazon adlı iki farklı sınıf, ürünün ilgili fiyat tekliflerini sağlamak ve Polimorfizm kavramını daha da açıklamak için aynı yöntem adları olan info ve init'i kullanır. Python.

Yöntemin aşırı yüklenmesi ile derleme zamanı Polimorfizmi arasındaki fark

Derleme zamanı Polimorfizminde, derleyici Python program çağrıyı çözer. Derleme zamanı Polimorfizmi, yöntemin aşırı yüklenmesi yoluyla gerçekleştirilir.

MKS Python derleyici çalışma süresi sırasında polimorfizm nedeniyle çağrıları çözümlemez. Aynı yöntemlerin benzer imzalar veya özellikler taşıdığı ancak farklı sınıfların bir parçasını oluşturduğu yöntem geçersiz kılma olarak da sınıflandırılır.

SSS

Ördek typing Haydi Python Bir nesneyi sınıf türüne göre değil, sağladığı yöntemlere göre değerlendirin. Bir nesne gerekli yönteme sahipse, "ördek gibi yürüyor ve ördek gibi ötüyorsa, ördektir" mantığına uygun olarak çalışır.

Geleneksel olarak değil. İki yöntem aynı adı paylaştığında, son tanım geçerlidir. Python Bunun yerine, varsayılan argümanları, değişken uzunluktaki *args'ı veya functools.singledispatch dekoratörünü kullanarak tek bir fonksiyon içinde farklı argüman türlerini ele alarak aşırı yüklemeyi simüle eder.

Abstracabc modülündeki temel sınıflar, her alt sınıfın uygulaması gereken yöntemleri tanımlar. Paylaşılan bir arayüzü zorunlu kılarlar, böylece ilişkisiz alt sınıflar polimorfik olarak kullanılabilir. Python Her birinin gerekli yöntemleri sağladığını garanti eder.

Polimorfizm, kodun yeniden kullanılabilirliğini, esnekliğini ve ölçeklenebilirliğini artırır. Bir fonksiyon veya arayüz birçok nesne türünü işleyebilir; bu da tekrarlamayı azaltır, bakımı kolaylaştırır ve halihazırda kullanan kodu yeniden yazmadan yeni sınıflar eklemenizi sağlar.

Evet. Ördek aracılığıylapingAynı metodu uygulayan, ancak birbiriyle ilişkisi olmayan sınıflar, ortak bir üst sınıfa ihtiyaç duymadan birbirlerinin yerine kullanılabilir. OperaTor'un aşırı yükleme özelliği ve len() gibi yerleşik fonksiyonları da kalıtım olmadan polimorfizm sağlar.

Polimorfizm, bir fonksiyonun dizeleri, listeleri veya özel nesneleri işlediği durumlarda, veritabanı sürücülerinin motorlar arasında tek bir API sunduğu durumlarda ve birçok widget'ın tek bir arayüz üzerinden çağrılan draw() veya update() yöntemlerini paylaştığı GUI araç setlerinde ortaya çıkar.

Yapay zeka çerçeveleri polimorfizme bağlıdır. Python'daTorch kütüphanesinde her model nn.Module sınıfından türetilir ve forward() metodunu geçersiz kılar; scikit-learn'de ise tahminciler fit() ve predict() metotlarını paylaşır, böylece farklı algoritmalar tutarlı ve birbirinin yerine kullanılabilir bir arayüz üzerinden çalışır.

Evet. GitHub Copilot ve ajansal yapay zeka asistanları, ördek tipi fonksiyonlar oluşturur ve mutlak değerler önerir.tracTemel sınıfları tanımlayın ve tekrarlanan yöntemleri kısa bir komut satırından yola çıkarak çok biçimli tasarımlara dönüştürün. RevMantığın ve arayüzlerin doğru olup olmadığını doğrulamak için çıktıyı inceleyin.

Bu yazıyı şu şekilde özetleyin: