クラス多態性
ポリモーフィズムの概念は、実際には理解するのが難しくありません。ポリモーフィズムとは、異なる型の変数に対して同じ操作を実行することを指し、オブジェクト (またはクラス) の型に応じて異なる動作を示します。
実際には、次のような多態性プロパティをよく使用します。
>>> 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 メソッドが自動的に呼び出され、異なる応答が行われます。これがポリモーフィズムの美しさです。
継承ではポリモーフィズムが可能であり、異なるタイプのオブジェクトは同じメッセージに対して異なる応答をすることに注意してください。