オブジェクト指向知人
関数型プログラミング対プロセス指向プログラミングの1.1レビュー
測定オブジェクト指向全ての#手続き型プログラミング要素数。 = S1 'fjdsklafsjda' COUNT = 0 I S1にするため: 。COUNTの+ 1 = L1 = [1,2,3,4] COUNT = 0 L1におけるI用: COUNT = + 1。
DEF FUNC(S): = 0カウント :I Sにするため のカウント+ = 1つの 戻りカウント FUNC( 'fdsafdsa') ([1,2,3,4])FUNC
これとは対照的に見つかった:最も重要な二つの特徴よりもプロセス指向プログラミング機能プログラミングを:
図1に示すように、コードの再利用性を低減します。
2、コードの可読性を向上させます。
1.2関数型プログラミングオブジェクト指向プログラミングVS
#関数型プログラミング #の認証、認証関連の ログインDEF(): パス DEFのregisgter(): パス #アカウントアカウントを関連 DEFの関数func1(): パス DEFの関数func2(): パス #カート関連 :DEFショッピング(ユーザー名、マネー) パス DEFをcheck_paidgoods(ユーザー名、マネー): パス DEFのcheck_unpaidgoods(ユーザー名、マネー): パス DEF保存(ユーザー名、マネー): パス
クラスLoginHandler: デフログイン(自己): 渡す (自己)regisgter DEF: パス・ クラスアカウント: DEF関数func1(自己): 渡す :デフ関数func2(自己) パス クラスShoppingCar: デフショッピング(ユーザー名、お金を): 渡す デフcheck_paidgoodsを(ユーザ名、お金): 渡す デフcheck_unpaidgoods(ユーザー名、お金): 合格 (ユーザー名、お金)を保存DEF: パス
#は、最初のオブジェクト指向の利点を比較して見ることができます:
オブジェクト指向プログラミング:より合理的な、あなたのコードがより明瞭にし、同様のタイプの関数の集まりです。
彼は、オブジェクト指向で何を見て、前に第二の利点を述べました。
オブジェクト指向プログラミングオブジェクトは神として自分自身を考える必要があります理由を理解するオブジェクト(神の思考)の中核であり、すべてのものは、すべてのオブジェクトは、神が存在しない世界の目で作成することができる存在です。
クラスとは何ですか?オブジェクトとは何ですか?
クラス:同じ特性および機能を持っているもののクラス。
オブジェクト:クラスの具体的な症状です。
具体的にそれらのいくつか:最初の⻋は車輪を持っているかを説明を説明し、ディスク、エンジンは、実行されることに方向があるが⻋顔は何⼀説明するのに良いですが、名前、年齢、趣味を持って歌いますとダンスの思考....?フェイスは、電車の中でとても広くている人は、等である。しかし、私の具体的な車は、あなたがオブジェクトである人物です。
猫は、飼いならされたクラス、あなたは大きなオレンジ色です。
犬2を飼いならされたクラスの隣で - カザフスタンでは、オブジェクトです。
⾯オブジェクトを自分の作成していると考えられたオブジェクトへ。独自のオブジェクトの世界にあなたがいるシーンを作成して、神の⾯である。あなたは⻋ますか、事の乾燥、乾燥したもの。あなたは顔、ドライ、ドライなものの事に直面することができるようにしたいです。
第二の利点のほかに:オブジェクト指向、実際には、問題の神の斜視外観を持っているために、一般的なクラステンプレート(植物)、オブジェクトが特定のテンプレートアウト(ゆっくり実現するために来る)からインスタンス化されます。
クラスの1.3構造
ヒトのクラス: 「」「 このような構築物は、主にヒト 」「」 マインド=最初の部分番号を「考え」:静的プロパティ静的変数静的フィールド DIC} = { L1 = []は DEF(自己)機能:第二部分# :関数メソッド動的プロパティ プリント(「仕事人間の) クラスは、クラスを定義し、DEF同じキーワードを使用します。 人間は、クラス名の一種であるクラス名はキャメル(キャメルケース)スタイルの命名を使用し、先頭にアンダースコアプライベートクラスが利用可能大文字。 2つの部分に分割される一般的な方向のクラス構造 静的変数。 動的な方法。
II。クラス名クラスの研究の観点から
オペレーティング静的プロパティの2.1クラス名
クラス名.__ dict__に道:2.11まず、すべてのクラスの内容を表示します。
ヒトのクラス: 「」「 このような構築物は、主にヒト 」「」 マインド=最初の部分番号を「考え」:静的プロパティ静的変数静的フィールド DIC} = { L1 = []は DEF(自己)機能:第二部分# :メソッド関数動的プロパティ #印刷(セルフ) を印刷( '働く人間の) 印刷(ヒト.__ dict__にマジック) 印刷(__ [ '心']人間.__ dictの) 人間.__ dictの__ [ '心'] = '無脳' 印刷(ヒト.__ dict__に)#エラー #は、この方法ではなく、付加および欠失を問い合わせる。 #最初の方法ユーザのクエリの唯一全内容(別のプロパティなしで一般的なクエリ)。
2.12秒:ユニバーサルポイント。
ヒトのクラス: 「」「 このような構築物は、主にヒト 」「」 マインド=最初の部分番号を「考え」:静的プロパティ静的変数静的フィールド DIC} = { L1 = []は DEF(自己)機能:第二部分# :動的な性質の方法が機能 #印刷(セルフ) を印刷( '仕事人間の) 印刷(Human.mindを)#チェック Human.mind =「ノーブレイン」#変更 印刷(Human.mind) 穿刺デルHuman.mind番号 人間を。 = '直立徒歩 印刷(Human.walkを) #は普遍で単一の属性クラスを変更して再検索ポイントを追加または削除することができます
上記の二つの要約を行います。あなたは、単一の動作点は、方法の普遍的な性質である場合は、最初の方法で__dict__クエリクラスのすべての内容を、必要な場合。
2.2動的なクラス名を動作させる方法
提供される2つの特別な方法に加えて:静的クラスメソッドへの方法は、この方法は、一般クラスのクラス名で動作しません。
ヒトのクラス: 「」「 このような構築物は、主にヒト 」「」 マインド=最初の部分番号を「考え」:静的プロパティ静的変数静的フィールド DIC} = { L1 = []は DEF(自己)機能:第二部分# :動的な性質の方法は、機能 #印刷(セルフ) を印刷(「仕事人間」) :DEFツール(セルフ)を 印刷する(「ヒトでの使用ツール」) Human.work(111) Human.tools(111) 以下を行うことができるが、いいえ。 ヒト.__のdict __ [ '作業' ](111)
III。オブジェクトクラスの観点から研究
3.1オブジェクトとは何ですか
オブジェクトは、限り()を持つクラス名として、クラスの外にあるプロセスの一例であり、これは、オブジェクトをインスタンス化します。
何が起こるか、次のコードを実行しますか?
クラスの人間: マインド= '思考' DEF __init __(自己): 印刷(666) 印刷(セルフ)#<__ 0x00000191508AA828 ATメイン__人物が。> DEFワーク(自己): 印刷( '人間が働く') DEFツール(セルフ): 印刷( 'ヒトに使用するツール') OBJ =ヒト()#オブジェクトのインスタンスは、それが自動的に__init__メソッドを実行するたびに 印刷(OBJ)を#<__メイン__人0x00000191508AA828 ATオブジェクト。> #とOBJアドレスと自己同じアドレス
実際には、オブジェクトの合計をインスタンス化し、三つのことがありました:
1は、メモリ内のオブジェクト・スペースを開きました。
図2は、自動的に実行されるクラスの__init__方法、及び対象空間(メモリアドレス)__init__メソッド第1位置パラメータ自己を通過しました。
図3は、__init__メソッドで自己を通じてオブジェクト空間に属性を追加します。
例:
クラスの人間: マインド=「考える」 言語=「言語」 DEF __init __(自己、名前、性別、年齢、趣味): 同じ空間で同じメモリアドレスへ#自己とOBJのポイントは、ここではこれに自己を介して行われ4つのプロパティは、パッケージのスペースをターゲットにしています。 名前= self.n self.sセックス= self.a =年齢 self.h =趣味 OBJ =ヒト( 'バリー'、 'M'、18 '運動')
オブジェクトは、操作対象空間3.2属性
3.21オブジェクトのクエリオブジェクトのすべてのプロパティ。オブジェクト.__ dict__に
クラスの人間: マインド=「考える」 言語=「実用的な言語」 :DEF __init __は(自己、名前、性別、年齢、趣味) 同じ空間で同じメモリアドレスへ#自己とOBJポイント、ここではこれに自己を介して行われ4つのプロパティは、パッケージのスペースをターゲットにしています。 名前= self.n self.sセックス= self.a =年齢 self.h =趣味 OBJ =ヒト( 'バリー'、 'M'、18 '運動') プリント(OBJ .__ dict__にマジック)#{ 'N-': 'バリー'、 'H': ' 運動'、 'S': 'M'、 '':18}
3.22オブジェクト操作単一属性オブジェクト。全能のポイント。
クラスの人間: マインド=「考える」 言語=「実用的な言語」 :DEF __init __は(自己、名前、性別、年齢、趣味) 同じ空間で同じメモリアドレスへ#自己とOBJポイント、ここではこれに自己を介して行われ4つのプロパティは、パッケージのスペースをターゲットにしています。 名前= self.n self.sセックス= self.a =年齢 self.h =趣味 OBJ =ヒト( 'バリー'、 'M'、18 '運動') によってobj.job = 'IT' # デルOBJ。 #nのパンクチャリング obj.s = 'M' #変更 プリント(obj.s)#チェック プリント(OBJ .__ dict__に)
3.3 Objectクラスは参照属性
人間クラス: マインドは= '考える' 言語= '実用的な言語を' DEF __init __(自己、名前、性別、年齢、趣味): self.n =名前 self.s =セックス self.a =年齢の self.h =趣味 OBJ =ヒト( 'バリー'、 'M'、18 '運動') プリント(obj.mind) プリント(obj.language) obj.a = 666 プリント(obj.a)
3.4メソッドクラスオブジェクトの操作
人間クラス: マインドは= '考える' 言語= '実用的な言語を' DEF __init __(自己、名前、性別、年齢、趣味): self.n =名前 self.s =セックス self.a =年齢の self.h =趣味 DEF仕事(セルフ): 印刷(セルフ) を印刷( '人間が働く') DEFツール(自己): 印刷( '人間が道具を使う') OBJ =人間( 'バリー'、 '男性'、18 '運動') obj.work() obj.tools()
この方法は、一般的に、オブジェクト上のクラス(外側の、静的メソッドのうちクラスメソッド)、およびこれらの方法のオブジェクトインプリメンテーションによって自動的にオブジェクト・スペース内のメソッドに渡された自己パラメータです。
何自己のですか?
実際には、自己のクラスメソッド(関数)第1位置パラメータではなく、インタプリタは、自動的にオブジェクトのパス自己のこの関数を呼び出します。だから我々は、自己を提供するクラスの大会の最初の引数、このオブジェクトの代表です。
クラスオブジェクトの複数インスタンス化することができます
OBJ1 =人間( 'ぽっちゃり'、 'M'、20 '美') obj2が=人間( 'Xiangye'、 'M'、18 '太った女性') 印刷(OBJ1、OBJ2) 印刷(OBJ1 .__ dict__に魔法) を印刷(obj2の.__ dict__に)