オブジェクト指向とは何ですか
オブジェクト指向プログラミングは、思考の種類は、より良いプログラムを書くためにプログラマーを導くためにどのように、前任者の経験を総括され、
コアは、プログラムの対象となるオブジェクトのコレクション、タスクと対話するためにこれらのオブジェクトをスケジュールする責任プログラム制御目です。
オブジェクト指向の3つの利点
1.スケーラビリティ
2.柔軟性
3.再利用
短所:
1.プログラムの複雑さを向上させます
2.正確な結果を予測できません
利用シナリオ
例えば、典型的には直接ユーザに手順の高いスケーラビリティ要件、:QQ、マイクロチャネル
コア懸念はプロセスであり、そのプロセスは、両方を実行する前にやってのステップにステップバイステップであります
利点:明確なロジック、複雑な問題を単純化、プロセス
短所:貧しいスケーラビリティ、保守性
使用シナリオ:
システムのカーネル、gitの、電卓次のような下方延長プログラムの要件
すべてのプログラムのオブジェクト指向ではないと、特定のニーズの分析があります覚えておいてください
クラスとオブジェクト
これは、OOPの中核となる概念であります
カテゴリ
どちらのタイプも、カテゴリは、抽象的な概念であります
これは、同じ機能を持つコレクションおよびオブジェクトの動作と同じです
オブジェクト
事は、特定の存在、自分の特性や行動を持っています
オブジェクトは、特性とスキルの組み合わせです
クラスとオブジェクト間の関係
クラスには、一連のオブジェクトが含まれています
オブジェクトは、クラスに属します
人生の中で最初にして、オブジェクトのクラスがあります
プログラムでオブジェクトを持っているために、最初のクラスですが、私たちはどのような行動オブジェクト機能のコンピュータどのように伝える必要があり
クラスを定義するための構文
クラス:クラスの名前は、コンテンツクラスがする属性やスキルを説明変数と属性を記述関数の動作記述書かれた仕様のクラス名を:最初は名前を知って見ることが意図され、名前は大きなこぶの命名法です。ハンプ単語を大文字に、大きなこぶが小さなこぶが、最初の文字を小文字で、最初の文字が大文字です。
:オブジェクト構文作成 クラスの人を: パス オブジェクトの作成# P =人を()
プロパティの文言:
クラスで書くことができるプロパティ
クラス属性は、すべてのオブジェクトに共通で、オブジェクトに書き込むことができるオブジェクトのプロパティ一意である(各オブジェクトが同じではない)オブジェクトは、同じクラス内に存在する場合プロパティ、オブジェクトにアクセスするためのアクセスクラスが存在しない場合
演習:先生は、共通のクラスとプロパティのユニークなプロパティ含まれている必要があります説明 :クラスの教師 学校=「Oldboy」 T1 =教師() t1.name =「ジャック」 28 = t1.ageを
削除は、検索属性変更します
プロパティの増加
オブジェクト変数名を。名前=属性の属性値を属性を削除するには、デルの変数名をオブジェクト。名前は、属性変更オブジェクトを。=属性の新しい値のプロパティを表示するには 、すべてのプロパティの対象となる訪問プリント(オブジェクトを。__dict__)アクセスオブジェクトクラス情報の印刷(オブジェクト。__class__)
initメソッド
初期化メソッドと呼ばれているが、本質的機能であります
特長1:オブジェクトがインスタンス化されると、自動的にinitメソッド
特集2:自動的に最初の引数としてオブジェクト、パラメータビット自己の名は、自己が別の名前にすることができますが、それは変更に推奨されていません
機能:ユーザーがオブジェクトに初期値を割り当てます
演習:初期化メソッドによって彼にプロパティを設定するためにいくつかのプロパティを持つクラスを作成します。
犬のクラス: DEF __init __(自己、種類、色、年齢): self.kind =種類 self.color =カラー self.age年齢= D1 =犬( "二HA"、 "白黒" ,. 1) D1 =犬( 「テディ」、「ブラウン」、2) 注意:この関数は、戻り値を持たない/ ....のみなし
オブジェクトの本質は、このように処理するために彼の関数データと処理データの両方にオブジェクトを取得するには、データと一緒にデータ処理機能に話すことがあります
バウンドメソッドオブジェクト
クラスメソッドは、デフォルトでメソッドのオブジェクトをバインドしています
それは特別なことです、
オブジェクトは、自動的に最初の引数として、オブジェクト自体に渡された関数を呼び出しますとき
彼を呼び出すために、クラス名は通常の関数である場合には、いくつかのパラメータは、いくつかのパラメータを渡すためにそこに持っています
演習:独自の名前情報をエクスポートできるようにするには挨拶のスキルと、学生のクラスを書きます
クラスの学生: デフ__init __は(自己、名): self.name =名前 DEF(自己)say_hi: プリント(%のself.name "こんにちは私の名前は%sのです")
クラスの結合方法
@classmethodを飾るために使用されるクラス結合方法
特別な機能は:かかわらず、クラスやオブジェクトの呼び出しの最初の引数として、自動的に入ってくるクラス自体です
機能ロジックは、被験体への結合を、データオブジェクトにアクセスするために必要な場合
データ論理機能は、クラスにバインドするために、クラスにアクセスする必要がある場合
非結合のアプローチ
または静的メソッドが呼び出され、それがされていることは、データアクセスクラスを必要としません。オブジェクトのデータにアクセスする必要はありません
構文:@staticmethod
ではない、一般的に
演習:saveメソッドを追加し、クラスに生徒を取得するためのメソッドであるオブジェクトがファイルに格納されていることを保存し、オブジェクトを取得するには、ファイルから取得することです
輸入OS 輸入ピクルス 、インポート時 クラスの学生: デフ __init__ (自己、名): self.name = 名前 DEF say_hi(自己): 印刷(' 名前' 、self.nameは) デフ(自己)を保存: オープン(self.nameで、' WB ' )としてf: pickle.dump(自己、f)は @staticmethod デフを取得(名前): (名前、オープンと' RB ' Fなど): OBJ =pickle.load(f)に 戻りOBJの 印刷(学生。__name__ ) #1 STU =学生( 'バラ') #1 stu.save() # # STU1 =学生( 'ジャック') #stu1.save() #の #OBJ =学生.get( 'バラ') #1 プリント(obj.name) # # OBJ = Student.get( 'ジャック') #1 プリント(obj.name)