pythonマルチステート
1774 ワード
pythonでは、変数を使用するときに特定のデータ型を指定する必要がないことが最も顕著な特徴です.これにより、同じ変数が異なるオブジェクトに前後して割り当てられる場合があります.
aはxiaobaiクラスとlileiクラスのオブジェクトとして前後して付与されることが分かるが,これは多態ではない.クラスのマルチステート特性は、次の2つの前提条件を満たします.継承:マルチステートは、子と親の間で に発生するに違いありません.書き換え:サブクラスが親を書き換えた方法
実際、pythonはマルチステートに基づいて、より柔軟なプログラミングメカニズムを生み出しました.
「アヒルモデル」:whosay()クラスのsay()関数にwhoパラメータを追加し、内部で受信したwhoを使用してsay()メソッドを呼び出します.これは、whosayクラスのsay()メソッドを呼び出すと、whoパラメータに渡されるクラスのインスタンスオブジェクトが、そのクラスのsay()メソッドを呼び出すことを意味します.
class xiaobai:
def say(self):
print(" xiaobai ")
class lilei:
def say(self):
print(" lilei ")
a = xiaobai()
a.say()
a = lilei()
a.say()
xiaobai
lilei
aはxiaobaiクラスとlileiクラスのオブジェクトとして前後して付与されることが分かるが,これは多態ではない.クラスのマルチステート特性は、次の2つの前提条件を満たします.
class xiaobai:
def say(self):
print(" xiaobai say ")
class lilei(xiaobai):
def say(self):
print(" lilei say ")
class mary(xiaobai):
def say(self):
print(" mary say ")
a = xiaobai()
a.say()
a = lilei()
a.say()
a = mary()
a.say()
xiaobai say
lilei say
mary say
# ,lilei mary xiaobai , say() 。
# a say() , a , a.say() say() , 。
実際、pythonはマルチステートに基づいて、より柔軟なプログラミングメカニズムを生み出しました.
class whosay:
def say(self, who):
who.say()
class xiaobai:
def say(self):
print(" xiaobai say ")
class lilei(xiaobai):
def say(self):
print(" lilei say ")
class mary(xiaobai):
def say(self):
print(" mary say ")
a = whosay()
a.say(xiaobai())
a.say(lilei())
a.say(mary())
xiaobai say
lilei say
mary say
「アヒルモデル」:whosay()クラスのsay()関数にwhoパラメータを追加し、内部で受信したwhoを使用してsay()メソッドを呼び出します.これは、whosayクラスのsay()メソッドを呼び出すと、whoパラメータに渡されるクラスのインスタンスオブジェクトが、そのクラスのsay()メソッドを呼び出すことを意味します.