ポリモーフィズム Python 例付き

ポリモーフィズムとは何ですか?

多態性は、さまざまな形で発生する状態として定義できます。これは、 Python プログラミングでは、 Python さまざまな方法で使用できます。これにより、プログラマは派生クラスで複数のメソッドを定義でき、親クラスと同じ名前になります。このようなシナリオでは、メソッドのオーバーロードがサポートされます。 Python.

ポリモーフィズム Operaトー

オペレーター Python 数学的および他のいくつかのプログラミングタスクを実行するのに役立ちます。たとえば、「+」演算子は、2つの整数型間の加算を実行するのに役立ちます。 Python同様に、同じ演算子は文字列の連結にも役立ちます。 Python プログラミング。

+(プラス)の例を見てみましょう 演算子 Python ポリモーフィズムの応用例を Python 以下のように:

Python コード:

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))

出力:

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'>

上記の例は、演算子オーバーロードの例とも言えます。

ユーザー定義メソッドのポリモーフィズム

ユーザー定義メソッドは、 Python プログラミング言語はユーザーが作成するメソッドであり、関数名とともにキーワード def を使用して宣言されます。

多型性 Python プログラミング言語は、メソッドのオーバーロードとオーバーライドによって実現されます。 Python 子クラスと親クラスの両方で、 def キーワードを使用して同じ名前のメソッドを定義します。

次のような例を見てみましょう。

Python コード:

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())

出力:

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

上記のコードには、circle クラスと square クラスで定義された XNUMX つのユーザー定義メソッド、perimeter と area があります。

上に示したように、circle クラスと square クラスの両方が、ポリモーフィズムの特性を示す同じメソッド名を呼び出して、必要な出力を提供します。

関数におけるポリモーフィズム

組み込み関数 Python 複数のデータ型を実行できるように設計され、互換性があります。 Python, Len() 重要な組み込み関数の XNUMX つです。

これは、リスト、タプル、文字列、辞書などのいくつかのデータ型で動作します。 Len () 関数は、これらの多くのデータ型に合わせた明確な情報を返します。

次の図は、ポリモーフィズムがどのように適用されるかを示しています。 Python 組み込み関数に関して: –

関数におけるポリモーフィズム

次のプログラムは、ポリモーフィズムの応用を説明するのに役立ちます。 Python: -

Python コード:

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"}))

出力:

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

関数におけるポリモーフィズム

上記の例では、Len()関数は Python それぞれ文字列、リスト、辞書データ型に対してポリモーフィズムを実行します。

ポリモーフィズムと継承

継承 Python 定義された子クラスが、存在する別の基本クラスからプロパティを継承するプログラミング概念として定義できます。 Python.

鍵はXNUMXつあります Python メソッドのオーバーライドとメソッドのオーバーロードと呼ばれる概念。

  • メソッドのオーバーロードでは、 Python 特定のコード内で異なる機能を実行するために、同じ名前のメソッドを作成する機能を提供します。メソッドをオーバーロードし、それらを使用してより単純な方法でさまざまなタスクを実行できます。
  • メソッドオーバーライドでは、 Python 親クラスと子クラスで同様の名前を共有する値をオーバーライドします。

以下に示すポリモーフィズムと継承の例を見てみましょう。

Python コード:

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())

出力:

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

上記のコードでは、メソッドの名前は init メソッドと area1 メソッドとして定義されています。 次に、正方形と長方形のクラスのオブジェクトを使用して XNUMX つのメソッドを呼び出し、さまざまなタスクを実行し、正方形と長方形の領域の出力を提供します。

クラスメソッドによるポリモーフィズム

この Python プログラミングでは、クラスメソッドを使用してポリモーフィズムとメソッドのオーバーロードを実現できます。 Python 同じ名前で宣言されたメソッドを持つことができる Python コー​​ド。

In Python2 つの異なるクラスを定義できます。1 つは子クラスで、親クラスと呼ばれる別の定義済みクラスから属性を派生します。

次の例は、クラスメソッドによるポリモーフィズムの概念を示しています。

Python コード:

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()

出力:

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.

上記のコードでは、flipkartとamazonという2つの異なるクラスが同じメソッド名infoとinitを使用して、それぞれの製品の価格見積もりを提供し、さらにポリモーフィズムの概念を示しています。 Python.

メソッドのオーバーロードとコンパイル時のポリモーフィズムの違い

コンパイル時ポリモーフィズムでは、 Python プログラムは呼び出しを解決します。コンパイル時のポリモーフィズムはメソッドのオーバーロードによって実現されます。

この Python コンパイラは、ポリモーフィズムのために実行時に呼び出しを解決しません。また、同じメソッドが同様のシグネチャまたはプロパティを持ちながら、異なるクラスの一部を形成するメソッド オーバーライドとしても分類されます。

まとめ

  • 多態性は、さまざまな形で発生する状態として定義できます。
  • オペレーター Python 数学的およびその他のプログラミングタスクを実行するのに役立ちます。
  • ユーザー定義メソッドは、 Python プログラミング言語はユーザーが作成するメソッドであり、関数名とともにキーワード def を使用して宣言されます。
  • ポリモーフィズム Python さまざまなクラスやメソッド用に記述されたコードの再利用性を促進するなど、いくつかの望ましい特性を備えています。
  • 子クラスは派生クラスであり、その属性を親クラスから取得します。
  • ポリモーフィズムは、実行時のメソッドのオーバーライドとコンパイル時のメソッドのオーバーロードによっても実現されます。
  • ポリモーフィズム Python 演算子のオーバーロードとクラスメソッドによっても実現されます。