クラス多態性LOGIN

クラス多態性

ポリモーフィズムの概念は、実際には理解するのが難しくありません。ポリモーフィズムとは、異なる型の変数に対して同じ操作を実行することを指し、オブジェクト (またはクラス) の型に応じて異なる動作を示します。

実際には、次のような多態性プロパティをよく使用します。

>>> 1 + 2
3
>>> 'a' + 'b'
'ab'

ご覧のとおり、2 つの整数を演算するとそれらの合計が返され、2 つの文字に対しても同じ演算が返されます。連結された文字列を返します。つまり、異なるタイプのオブジェクトは、同じメッセージに対して異なる応答をします。

次の例を見てポリモーフィズムを理解してください:

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
class User(object):
    def __init__(self, name):
        self.name = name
    def printUser(self):
        print('Hello !' + self.name)
class UserVip(User):
    def printUser(self):
        print('Hello ! 尊敬的Vip用户:' + self.name)
class UserGeneral(User):
    def printUser(self):
        print('Hello ! 尊敬的用户:' + self.name)
def printUserInfo(user):
    user.printUser()
if __name__ == '__main__':
    userVip = UserVip('两点水')
    printUserInfo(userVip)
    userGeneral = UserGeneral('水水水')
    printUserInfo(userGeneral)

出力結果:

Hello ! 尊敬的Vip用户:两点水
Hello ! 尊敬的用户:水水水

ご覧のとおり、userVip と userGeneral は 2 つの異なるオブジェクトです。実際の型の printUser メソッドが自動的に呼び出され、異なる応答が行われます。これがポリモーフィズムの美しさです。

継承ではポリモーフィズムが可能であり、異なるタイプのオブジェクトは同じメッセージに対して異なる応答をすることに注意してください。

次のセクション
コースウェア