day25インタフェースクラス抽象クラスのカプセル化

レビュー:

#継承:どのような関係である何
#単一継承が*****
#まず抽象的、抽象いくつかのクラスの間で同じコードを継承し、親クラスとなり
、彼は名前ませんでした#サブクラスは、親クラスを使用することができますメソッドと属性
、彼らはサブカテゴリーを持っている場合、それは彼らとの最初でなければなりません#を
自己を使用した時点の自己を見てください、クラスの#
#複数の継承***
#新しいクラスと古典的なクラス:
名前を見つけるために#多重継承をオーダー:新しいクラス幅優先、深さ優先のクラシック
#新しいクラスがメソッド.mroクラス名を持つ、後継の幅優先順位を参照
後継幅の優先順位に基づいて、クラスを見つけるために、スーパーな方法がある#1のpython3を

#インターフェイスクラス:Pythonのネイティブではサポートしていません
#の抽象クラスを:Pythonのネイティブサポート
#インターフェイスクラスと抽象クラスは単なるアイデアです
#仕様:インターフェースクラスや抽象クラスをすることができます
#インターフェイスは多重継承をサポートし、インタフェースクラスのすべてのメソッドがあります達成されてはならない- Javaの
#抽象クラスは、抽象クラスのメソッドは、いくつかのコードを達成することができ、複数の継承をサポートしていません- Javaの
ABC輸入AbstractMethod、ABCMetaのから
クラスの支払い(メタクラスをその= ABCMeta):タイプの#デフォルトのメタクラスのメタクラス
@ AbstractMethod
DEF有料(自己、マネー):#このメソッドを実装していませ渡し
:クラス微信(支払い)を
DEF(セルフ、金)を支払う:
印刷(「%sのメタマイクロチャネルを支払った」%マネー)
クラスアリペイ(支払):
:DEF(自己、金)の支払い
を印刷(%マネー'%sの要素アリペイ使用されています')
クラスapplepay(入金):
DEF(お金をセルフ)を支払う:
印刷( 'applepayと%sの要素を支払った' %をマネー)
賃金(pay_obj、マネー)DEF:#統一有料入場
pay_obj.pay(金)

アプリ= Applepay()
のp =お支払い()

#すべてがファイルされた
インポートABC#abcのモジュールは、抽象クラスを使用する実装
クラスAll_file(abc.ABCMetaを=メタクラスを):
all_type =「ファイル」
abc.abstractmethod @#機能を実現することなく、抽象メソッドを定義する
デフ(自己を)読み:
サブクラスの必要があります「関数の定義を読んで
(filaname」)オープンして「F AS:
パス

@ abc.abstractmethod#の機能を実装することなく、抽象メソッドを定義する
書き込み(セルフ)DEF:
」サブクラスが書き込み機能を定義する必要があります"


クラスtxtが(All_file):#子供をクラスは抽象クラスを継承しますが、読み取りを定義し、メソッドを記述する必要があります
(自己を)読んDEF:
印刷(「テキストデータ読み出し方法」)
DEF書き込み(セルフ):
印刷(「テキストデータ読み出し方法」)

クラスSATA(All_file ):#サブクラスは、抽象クラスを継承しますが、読み取りを定義し、メソッドを記述する必要があります
)DEF(自己を読む:
印刷(「ハードディスクのデータの読み出し方法」)

デフ(自己)を記述します。
印刷(「ハードディスクのデータは、メソッド読ん」)

クラスのプロセス(All_fileを):#サブクラスが抽象クラスを継承しますが、読み取りおよび書き込みメソッドを定義する必要があります
(自己を)読んDEF:
(「読み取り方法のプロセスデータ」)印刷が

DEF書き込み(セルフ):
'メソッドの処理データを読み込む')プリント

wenbenwenjian = txtが()

yingpanwenjian = SATA()

jinchengwenjian =プロセス()

私たちは、すべての正規化されているので、それはすべてがのファイルで考え、ある
wenbenwenjian。読んで()
yingpanwenjian.write()
jinchengwenjian.read()

印刷(wenbenwenjian.all_type)
印刷(yingpanwenjian.all_type)
印刷(jinchengwenjian.all_type)

インポートAbstractMethod ABC ABCMetaの、から
:クラスSwim_Animal(=メタクラスABCMeta)
@abstractmethod
DEFスイム(自己):渡す

クラスWalk_Animalを(=メタクラスABCMeta):
@abstractmethod
DEFウォーク(自己):渡す

クラスFly_Animal(=メタクラスABCMeta):
@abstractmethod
DEF(自己)フライ:渡し

クラスタイガー(Walk_Animal、Swim_Animal):
DEFウォーク(セルフ):
パス
DEFスイム(セルフ):
パス
クラスOldYing(Fly_Animal、Walk_Animalは):パス
クラススワン(Swim_Animal、Walk_Animal、Fly_Animalを):パス
#をちょうどオブジェクト指向開発のインタフェース仕様イデオロギー分離の原則を満たすために、インタフェースクラス



#抽象クラス:仕様
#通常は単一継承機能を実現することができるのと同じなので、親クラスは、いくつかの簡単な基本的な実現を持つことができる
機能が複雑であるため、ケース#多重継承を、それが抽象的に同じ機能に簡単ではありません親クラスで記述された特定の実施
#抽象クラスまたはインタフェースのクラス:すべてのインタフェースと抽象クラスのオブジェクト指向開発仕様はクラスインスタンス化することができない
#Javaの:
Javaクラス内の#は全て単一継承なので、抽象クラスを継承しますで単一継承規制問題の需要に最適なソリューション
#しかし、多重継承の需要のために、彼らは多重継承規制問題解決するようにインターフェイスインターフェイスのコンセプトを作成し、Javaの自分自身を構文をサポートしていませんので、

#パイソン
なしインタフェースクラス#パイソンでは:
#パイソンは、私たちが直接インタフェースクラスを実装するクラスを使用する複数の継承が付属して
インスタンス化することはできません一般的に、単一継承を:サポート抽象クラスで#パイソンを
#とPythonのコードを達成することができます

オブジェクト指向パッケージを幅広く#上:保護コード、オブジェクト指向の考え方そのものである
だけで、独自のオブジェクトは、クラスのメソッドを呼び出すことができますようにする#

狭く#上でパッケージを-オブジェクト指向の三つの特徴の1
#プロパティそしてあなたから非表示にする方法は、参照
:クラスの人
__key = 123#プライベート静的プロパティ
DEF __init __(自己、名は、passwd):
self.name名=
自己.__ passwdの#passwdを=私有財産
デフ__get_pwd(自己):#プライベートメソッドの
戻り値の自己.__ passwdの#だけで自動的_クラス名をもたらす、クラス内のプライベートプロパティを使用する
デフログイン(自己):#通常の方法では、プライベートメソッドを呼び出します
(セルフ.__ get_pwdを)
アレックス者は=( 'アレックス「alex3714」)
印刷(alex._Person__passwd)#_ __クラス名、属性名
を印刷(alex.get_pwd())

すべてのプライベート変数は二重下線で左にある#
オブジェクト#1の私有財産
#クラスプライベートメソッド
#クラスの静的私有財産
外用#のためのすべてのプライベートクラスではありません

#ポリモーフィックのpython自然多型
#DEF FUNC(int型NUM、STR名):
パス
#の
#のFUNC( 'アレックス'、2)
クラスのお支払い方法:パス

#クラスアリペイ():
のDEF有料(自己、マネー) :
#印刷は(%マネー'は既に%sの元アリペイ支払った')
#1
:#クラスapplepay()
有料(自己、マネー)DEF#:
印刷(%お金'は既にapplepay%sの要素を支払っ')

#デフ支払う(pay_obj、お金) :# 統一有料入場正規化された設計
#のpay_obj.pay(マネー)

#有料()

多型は何#
#パイソンダイナミック強く型付けされた言語
#ダックタイピング
#タプルのリスト
#が提唱していません結果として継承された同様のに従って、
#私はちょうどそれを達成するために自分自身のコードを所有しています。
#もし2つのクラスが同じように、親クラスの兄弟のサブクラスを生成しませんが、アヒル型
#リストのタプル、この類似性は、むしろよりも、親クラスの制約によって、それ自体がバインドされたコードを記述しています
#利点:各クラス間には疎結合同様のインパクト
#の欠点:あまりにもカジュアルだけを意識に頼ることができます

(クラスリスト):
DEF __len __(自己):渡す
(クラスタプルを):
DEF __len __(自己):パス

DEF LEN(OBJ):
返すOBJ .__ lenの__()

L =タプル()
lenは(L)

##、強く型付けされた言語多型
の## Python言語アヒル型
は非常にではありませんPythonでのアプリケーションの#インターフェースクラスと抽象クラスのポイント必要




おすすめ

転載: www.cnblogs.com/Murraya/p/11209906.html