ポリモーフィズム
多型は、物事のクラスを指し、様々な形態を持っています
ヒト、イヌ、ブタ:動物の様々な形態があります。
import abc
class Animal(metaclass=abc.ABCMeta): #同一类事物:动物
@abc.abstractmethod
def talk(self):
pass
class People(Animal): #动物的形态之一:人
def talk(self):
print('say hello')
class Dog(Animal): #动物的形态之二:狗
def talk(self):
print('say wangwang')
class Pig(Animal): #动物的形态之三:猪
def talk(self):
print('say aoao')
テキストファイル、実行可能ファイル:ファイルは、様々な形態を持っています
import abc
class File(metaclass=abc.ABCMeta): #同一类事物:文件
@abc.abstractmethod
def click(self):
pass
class Text(File): #文件的形态之一:文本文件
def click(self):
print('open file')
class ExeFile(File): #文件的形态之二:可执行文件
def click(self):
print('execute file')
ポリモーフィズム
結合マルチステートダイナミック何ですか(相続の文脈で使用される場合、時々呼ばれる多型)
多型の種類の例を考慮することなく使用例を指し
オブジェクト指向のアプローチでは、一般的に多型を発現している:
別のオブジェクトに同じメッセージを送信する(!!! obj.func():FUNCもFUNCのOBJに送信されるメッセージとして知られている、OBJ法と呼ばれます) 、異なるオブジェクトを受信した場合、異なる挙動(すなわち、メソッド)を有するであろう。
つまり、各オブジェクトは、共通のメッセージに応答するためにあなたの方法にすることができます。いわゆるニュースは関数を呼び出すで、異なる挙動が異なる機能を実行する異なる実装を指します。たとえば:)教師のベルが(鳴った)、学生のベルが(鳴った、仕事から教師は、同じ2つのメッセージが、学校の操作の後、学生によって行われ、操作によって行われるが、の実装の異なる効果
ポリモーフィズム
peo=People()
dog=Dog()
pig=Pig()
#peo、dog、pig都是动物,只要是动物肯定有talk方法
#于是我们可以不用考虑它们三者的具体是什么类型,而直接使用
peo.talk()
dog.talk()
pig.talk()
#更进一步,我们可以定义一个统一的接口来使用
def func(obj):
obj.talk()
アヒルタイプ
時間よりもいじめます:
「それは、のように見えるように聞こえるとアヒルのように歩き場合、それはアヒルである」Pythonの提唱鴨の種類、すなわち、
Pythonプログラマは通常、この動作に基づいてプログラムを書きます。既存のオブジェクトのカスタムバージョンを作成したい場合たとえば、オブジェクトが継承することができます
あなたはまた、外観を作成し、のように振る舞うが、それは一般的に疎結合コンポーネントのプログラムを保存するために使用される新しいオブジェクトとの関係がないことができます。
例1:ファイルのようなこれらの作品のオブジェクトが、オブジェクト「のようなファイルと」ライブラリで定義されている基準のさまざまな方法を使って、彼らは組み込みのファイルオブジェクトのメソッドを継承しませんでした
例2:そこシーケンス形のいくつかの種類があります:文字列、リスト、タプルは、しかし、彼らは直接には直接の継承関係を持っていません
#二者都像鸭子,二者看起来都像文件,因而就可以当文件一样去用
class TxtFile:
def read(self):
pass
def write(self):
pass
class DiskFile:
def read(self):
pass
def write(self):
pass