オブジェクト指向

オブジェクト指向の知人:

オブジェクト指向のに加えて、プロセス指向、プロセス指向し、それが何であることはありますか?

プロセス指向:

プロセス指向プログラミングのアイデアがある、ステップ、すなわち最初に何をすべきか何をすべきか、問題を解決するために、つまり、コードを合理化することであり、そのコアはプロセスです。

長所:プロセスの複雑な問題、簡素化

短所:拡張性の低い、低再利用性、低メンテナンス

オブジェクト指向:

それはもはや、所望の設計オブジェクトを取得するには、プロセスをもつれ、そのコアがターゲット単語である、また、プログラミングのアイデアではありません。

長所:高い拡張性、高い再利用性、保守性の高いです

短所:複雑さの問題を解決するために高いです

シナリオ:オブジェクト指向は、高い柔軟性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 =ヒーロー(" 康夫"20200010060001000年
H2 =ヒーロー(" 妲己"20は2000年1006005001000年
H3(=ヒーロー" ルバニ"20である1500700100200は300 
H4 =ヒーロー(" 蔡エン"202000100010 


#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(14 
    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

 

おすすめ

転載: www.cnblogs.com/xinfan1/p/11240155.html