オブジェクト指向の知人:
オブジェクト指向のに加えて、プロセス指向、プロセス指向し、それが何であることはありますか?
プロセス指向:
プロセス指向プログラミングのアイデアがある、ステップ、すなわち最初に何をすべきか何をすべきか、問題を解決するために、つまり、コードを合理化することであり、そのコアはプロセスです。
長所:プロセスの複雑な問題、簡素化
短所:拡張性の低い、低再利用性、低メンテナンス
オブジェクト指向:
それはもはや、所望の設計オブジェクトを取得するには、プロセスをもつれ、そのコアがターゲット単語である、また、プログラミングのアイデアではありません。
長所:高い拡張性、高い再利用性、保守性の高いです
短所:複雑さの問題を解決するために高いです
シナリオ:オブジェクト指向は、高い柔軟性QQ、マイクロチャネルを必要とすると、顧客に直接適用されるべきです、
プロセスは、Linuxカーネルとして、頻繁に変更されないために適用されるべきです
クラスとオブジェクト:
オブジェクト:特定の特性との組み合わせの動作を持っている、それはまさにの存在であります
クラス:同じ特性および挙動を有するオブジェクトの直列組合せ、抽象エンティティであります
人生の中で最初にして、オブジェクトのクラスがあり、プログラミングにそこでの最初のオブジェクトクラスです。
それは間違いなくプロパティで機能部門では、挙動はの関数であり、
クラス名は、イタリアの名前を知って見にプレーしなければならない、と書き込みの大きなこぶの使用は、最初の文字は大文字
例:
クラスPerson:
パス
オブジェクトを作成します。
P =人()
印刷(P)#<メイン__ __。0x10b11d588でPersonオブジェクト>
オブジェクトの操作属性
私たちは、財産を増やしたい、オブジェクトを作成した後、ドット構文変数名を使用することができます。
p.name = 'LW'
印刷(p.name)#は同じドット構文があり得ます
オブジェクトの順序を探します
オブジェクト自体に最初に移動し、クラスオブジェクトが配置されて見つけます。
現在のオブジェクトの印刷のすべてのプロパティ(オブジェクト.__ dict__に)アクセス
現在、情報へのクラスオブジェクトの印刷(オブジェクト.__ class__)アクセスを常駐
__init__初期化メソッド:
これは、初期化方法であって、本質的に関数です。
その特徴は以下のとおりです。
それはオブジェクト・クラスがインスタンス化される生成時に自動的に実行される1
2.オブジェクトと、自動的に最初の引数として渡されます
3.この関数は、戻り値はありません
機能:初期値がオブジェクトに与えられています
クラス犬: デフ__init __(自己、種類、色、年齢): self.kind = 種類 self.color = カラー self.age = 年齢 D1 =犬(" 二哈"、" 黑白"、1 ) D1 =犬(" 泰迪" " 棕色」、2)
オブジェクト関数の本質は、オブジェクトがデータのみを取得することができ、データ処理機能に対処するために得ることができないように、データを統合し、一緒にデータを処理することです
Bindingメソッド:
結合方法はまた、結合機能を呼び出すことができ
結合メソッドの内部に分割されています。
バインディングオブジェクトメソッド:
特徴:1オブジェクトを第一引数として自動オブジェクト、関数を呼び出します
2.クラス名を指定して呼び出された一般的な機能である、いくつかのパラメータは、いくつかのパラメータを渡す必要がありますがあります
クラス結合方法:
@classmethod
オブジェクトは、最初の引数として自動的にクラス、関数を呼び出しますとき
非結合のアプローチ
@staticmethod
どちらのデータもデータオブジェクトのニーズクラス、普通の機能
クラス例:
インポートランダム 読み込み時間の クラスヒーロー: DEF __init __(自己、名前、レベル、血液、ATT、q_hurt、w_hurt、e_hurt): #シンプル書かれた LCS = 地元程度() lcs.pop(" 自己" ) 自己.__ dictの__アップデート(LCS。 ) DEF攻撃(自己、敵): enemy.blood - = self.attの 印刷(" 通常攻撃の%sの%sのリリースでは、敵%sの血液量%sの残りのダメージを引き起こした"%(self.name、敵を。名前、self.att、enemy.blood)) IF enemy.blood <= 0 : 印刷(" %sの%sは通常の攻撃を殺すために使用されました"%(Enemy.name、self.name)) DEF Q(セルフ、敵): enemy.blood - = self.q_hurtの 印刷(" Qの%sの%sのリリースでは、%sの%sの血を、残りのダメージ敵を引き起こしました"%(self.name、enemy.name、self.q_hurt、enemy.blood)) IF enemy.blood <= 0 : 印刷は、(" %S QはスキルS%を殺すために使用されている「%(enemy.name、セルフ.nameの)) DEF W(セルフ、敵): enemy.blood - = self.w_hurtの 印刷(" 健康%sの残りのW%sの原因となるダメージ敵の%sの%sの解放"%(self.nameを、 enemy.name、self.w_hurt、enemy.blood)) IF enemy.blood <= 0 : 印刷(" %SはスキルW S%殺すために使用される"%(enemy.name、self.name)) :DEFのE(セルフ、敵を) enemy.blood = - self.e_hurt プリント(" リリース%S Eの%sの%sの敵%の残りの血液の損傷原因"%(self.name、enemy.name、self.e_hurt、enemy.blood))を IF enemy.blood <= 0 : 印刷(" %Sの%S Eが使用されているスキルキル"%(enemy.name、self.name)) のH1 =ヒーロー(" 康夫"、20、2000、100、600、0、1000年) H2 =ヒーロー(" 妲己"、20は、2000年、100、600、500、1000年) H3(=ヒーロー" ルバニ"、20である、1500、700、100、200は、300 ) H4 =ヒーロー(" 蔡エン"、20、2000、10、0、0、10 ) #1 #のh1.attack(H2) )の#h2.Q(H1 #1 h2.E(のH1) #h2.W()のH1 辞書から#ランダム値を思い付く :DEF random_hero(ヒーロー) hero_index(= random.randint 。1 、LEN(ヒーローズ))を 返すヒーローズは[hero_index] しばらく:真の ランダム除去するための##のすべての辞書攻撃にロード のfuncs = { 1 Hero.Q、:2:Hero.Wを、3:Hero.E、4 :Hero.attack} func_index = random.randint(1、4 ) FUNC =funcs [func_index] 取り除くランダム化するために、すべての英雄方法は辞書にロード# ヒーローズ = { 1:のH1、2:H2を、3:H3、4 :H4} ヒーロー = random_hero(ヒーローズ) #残りヒーロー other_heros = } { NEW_INDEX = 1。 ための K、V でheros.items(): IF!V = :ヒーロー other_heros [NEW_INDEX] = V NEW_INDEX + = 1 ランダム主人公叩解の残りの部分に主人公から採取# 敵 = random_hero(other_heros ) #打他の FUNC(ヒーロー、敵) の場合 enemy.blood <= 0 : ブレーク time.sleep(0.5)