ホームページ >バックエンド開発 >Python チュートリアル >Python のポリモーフィズムを理解する

Python のポリモーフィズムを理解する

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-08 00:16:12545ブラウズ

Understanding Polymorphism in Python

この記事では、Python のポリモーフィズムについて詳しく説明し、オブジェクト指向プログラミングにおけるポリモーフィズムの役割を強調しています。


ポリモーフィズムは、多くの形状または多くの形式を意味するギリシャ語です。ポリモーフィズムは、オブジェクト指向プログラミング (OOP) の基本概念です。 Python はポリモーフィックです。つまり、Python ではオブジェクトがさまざまな形式を取ることができます。簡単に言うと、ポリモーフィズムにより、同じアクションをさまざまな方法で実行できるようになります。 (Vishal、2021) さらに、Python ではすべてがオブジェクト/クラスです。 「Guido van Rossum は、「すべてが一流」という原則に従って言語を設計しました。彼は次のように書いています。「Python に対する私の目標の 1 つは、すべてのオブジェクトを「ファーストクラス」にすることでした。これは、その言語で名前を付けることができるすべてのオブジェクト (整数、文字列、関数、クラス、モジュール、メソッドなど) が同等のステータスを持つことを意味しました。」 (Klein、2022、1. オブジェクト指向プログラミング)

ポリモーフィズムを理解するには、「アヒル タイピング」の概念を理解することが重要です。「アヒルのように見え、アヒルのように鳴く場合、それはおそらくアヒルです。」プログラミングにおいて、これは、オブジェクトの適合性が、オブジェクトの実際の型ではなく、特定のメソッドとプロパティの存在によって決定されることを意味します。Python では、ダック タイピングは、オブジェクトの「適合性」が次の条件によって決定される概念です。オブジェクトの実際のタイプではなく、特定のメソッドまたは属性の存在。つまり、Python のポリモーフィズムとは、単一の演算子、関数、またはクラス メソッドがコンテキストに応じて複数の形式/動作を持つことができることを意味します。

1.演算子の多態性
または、演算子のオーバーロードにより、演算子はオペランドの型に基づいてさまざまな操作を実行できます。 (ジャーゲンソン、2022)

例:
2 つの整数

int_1 = 10
int_2 = 45
print(str(int_1 + int_2))
>>>
55

2 本の文字列

str_1 = “10”
str_2 = “45”
print(str_1 + str_2)
>>>
1045

2.関数多態性
len() のような組み込み関数は、複数のデータ型 (文字列、リストなど) に作用し、各型に対して適切に測定された長さを提供できます。

例:

str_1 = "polymorphic"
print(str(len(str_1)))
>>>
11

my_lst = [1, 2, 3, 4, 5]
print(str(len(my_lst))
>>>
5

3.クラスメソッドのポリモーフィズム
サブクラスが親クラスから継承したメソッドをオーバーライドできるようにします。

例:

#  Parent class
class Animal:
    def make_sound(self):
        pass

# Child Class
class Dog(Animal):
    def make_sound(self):
        return "Woof!"

# Child Class
class Cat(Animal):
    def make_sound(self):
        return "Meow!"
    def animal_sound(animal):
        print(animal.make_sound())
dog = Dog()
cat = Cat()
animal_sound(dog)  # Output: Woof!
animal_sound(cat)  # Output: Meow!

4.独立したクラスは、異なる動作をする同じ名前のメソッドを定義することもできます。

例:

def enter_obj(obj):
    return obj.action() # Independent class
class Animal:
    def __init__(self, food):
        self.food = food
    # same name as the Circle method different functionality
    def action(self):
        print(f"eats {self.food}")# Independent class
class Circle:
        def __init__(self, radius):
            self.radius = radius
        # same name as the Animal method different functionality
        def action(self):
            return 3.14 * (self.radius ** 2)
cow = Animal("grass")
circ = Circle(7)
enter_obj(cow)print(str(enter_obj(circ))) 
>>> 
eats grass 
153.86

結論として、ポリモーフィズムは Python の強力な機能です。これにより、オブジェクトが複数の形式をとり、コンテキストに基づいて異なる動作を行うことができます。 Python のダック タイピングは、オブジェクトの実際の型ではなく、特定のメソッドまたは属性の存在に焦点を当てることで、ポリモーフィズムを可能にします。


参考文献:

Jergenson, C. (2022、5 月 31 日)._ Python のポリモーフィズムとは何ですか?_。教育的。 https://www.educative.io/blog/what-is-polymorphism-python

クライン、B. (2022 年 2 月 1 日)。 オブジェクト指向プログラミング / OPP。 Pythonコース。 https://python-course.eu/oop/object-owned-programming.php

ヴィシャル。 (2021年10月21日)。 Python のポリモーフィズム。ピネイティブ。 https://pynative.com/python-polymorphism/


元々は、2024 年 8 月 19 日に「Understanding Polymorphism in Python - Medium」で公開されました。

以上がPython のポリモーフィズムを理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。