8.6オブジェクト指向プログラミングの基礎

クラスとオブジェクト

簡単に言えば、クラスは青写真とテンプレートオブジェクトであり、オブジェクトはクラスのインスタンスです。この説明は、一種の概念の解釈の概念のようなものだったが、少なくとも、我々はこの文から見ることができますが、クラスが抽象的概念であるが、オブジェクトは、特定のものです。オブジェクト指向プログラミングの世界では、すべてのものがオブジェクトである、オブジェクトには属性があり、各オブジェクトの挙動は一意であり、オブジェクトが特定のカテゴリ(タイプ)に属している必要があります。我々は静特性(プロパティ)を入れオブジェクトと抽出された動特性(行動)の一般的な機能をたくさん持っているときは、名前の「クラス」の事を定義することができます。

書かれた関数

「」 "
()関数の名前を指定します:
コロンはタブをインデントします
あなたはあきらめた場合、それはあなたが与える値を返し、デフォルトなしにリターンリターンを与えていない場合は、すべての機能は、Pythonで値を返します
"" ""
DEF FUNCNAME():
。....
      リターンは....
"" "
)(クラス名を識別します:
        タブインデントされますコロンがある
" ""
クラスclassName(オブジェクト):
        ..... ...

 

 

「」 "
1インポートライブラリ、インポートライブラリ名
2.ループため、ケースを使用してカウントされた場合に
            開始しなく長い終了
    インターバル範囲の閉鎖は、フロントとリアの開口である。
    範囲(開始、終了、[STEP])
3.フォーマット出力
3.1% - >%()、次いで整数%のD、浮動小数点接続F%、接続文字列%S。
3.2 {} - >フォーマット()、それは任意の種類を直接渡すことができ、次いでフォーマットされた出力。

4.printコンソール(端末)を印刷
デフォルトでは、改行「\ N-」どのような方法で終了する4.1エンドを
4.2フラッシュフラッシュバッファを。
「」 "

 

「」「
Functionクラスは、独自のパラメータを持つことができます
自己」のマーク。あなたは、このパラメータを共有したいときは、ヒット「
」「」

クラスA(オブジェクト):
       デフ__init __(自己、A):
             self.a =
       デフB(自己、B):
             self.b = Bの
             印刷(B)
       C(自己)DEF:
             プリント(self.b)


J = A(1000)
JB(10)
JC()

 

クラスの定義

#オブジェクトパラメータではありません
「」「
クラスは2つだけのステップがある定義されています
。1.識別子クラス名クラス(オブジェクト):
2.機能を書き換えますが、覚えておいて、上のいくつかの遊び__init__」自己「のラベル
後者以来の継承を学びます、時間を継承する場合はケース関数名衝突した。ている場合があります
クラスは、複数の変数、複数の機能が含まれます、あるいは、あなたは「自己」を区別するための手段を使用する必要があります。
3.クラスを。注意すべき__init__関数の質量の参加は、あなたが複数のパラメータを使用している場合は、その後、の関数であってもよいということである
あなただけの__init__関数にパラメータを定義するために行く
「"」
クラスの学生(オブジェクト):
       __init __ DEF(セルフ、名):
               印刷の#の複数""分離。
               印刷(名)


学生(100)

 

 

#このオブジェクトは、Python2で記述する必要がありますが、それは(継承されたオブジェクトのデフォルト)を書かないでのpython3に書き込むことができます。

クラス学生(オブジェクト):
      オブジェクトの作成時に#の__init__は、初期化のための特別な方法であり、
      #を学生がターゲットとするために、我々は二つのプロパティの名前と年齢をバインドすることができ、このよう
      DEF __init __(自己、名前、年齢):
            self.name =名
            self.age年齢=

      研究DEF(自己、COURSE_NAME):
            印刷( '%Sは%sに学んでいる。' %(self.name、 COURSE_NAME))

      #のPEP 8は、アンダースコアを持つすべて小文字複数の単語で接続識別子名を必要と
      #が、多くのプログラマーや企業が命名こぶ(ハンプロゴ)を使用する方が傾斜している
      DEFのwatch_av(セルフ):
             18 <self.age場合:
                 印刷( 「%はsのことができる唯一のビュー『クマの。』」self.name%)が
             他:
                  印刷(「S島を見ている%愛のアクション映画。」self.nameの%
#インスタンスの
学生=学生()

説明:クラスの関数を記述し、我々は通常の方法(オブジェクト)を呼び出し、これらの方法の目的は、メッセージを受信することができるということです

#クラスは少し疲れて学ぶことができます。
クラスの学生(オブジェクト):
      「」「
第二段階が初期化され、それ自体を初期化します。
あなたのクラスには、いくつかの一般的な変数を持っているとき、あなたは初期化できる
変数は、多くの場合、公共の場で配置されている初期化します。
      」」 "
      DEF __init __(自己、名):
             " ""
             クラスでは、すべての変数と関数をマークしなければならない(自己)
              "" "
              self.name名=
       DEF DEF1(セルフ、NUM):
              self.num = NUMの
              印刷( self.num)
              印刷(self.name)
       DEF DEF2(セルフ):
              印刷(self.num)
              印刷(self.name)


__name__ == "__main__" IF:
    カッコ内の#インスタンス、クラス名は"学生()"、直接初期化関数の実行
     学生を=学生( 'Dumiaoミャオ族')
     student.def1(100)
     student.def2()

 

オブジェクトの作成と使用

我々は良いクラスを定義するときは、次のようにオブジェクトを作成し、オブジェクトにメッセージを与えることができます。

メインDEF():
      #は学生のオブジェクトを作成し、名前と年齢を指定
      STU1を=学生(「羅ハオ」、38)
       のメッセージへの研究の#オブジェクト
      stu1.study(「Pythonプログラミング」)
       #watch_avは、オブジェクトにメッセージを送信
        stu1.watch_av ()
        STU2学生=( 'キングハンマー'、15)
        stu2.study( '道徳的')
        stu2.watch_av()


もし__name__ == '__main__':
       メイン()

 

可視性の問題にアクセス

上記のコードでは、C ++やJava、C#、および他のプログラミング経験プログラマはために私たちを求めることができるStudent結合ターゲットnameageプロパティを最後に(また、視認性と呼ばれる)アクセスの種類を持っています。多くのオブジェクト指向プログラミング言語では、我々は通常、プロパティを対象としますので、オブジェクトのメソッドは、通常は公開されている間(、(保護)プライベート(プライベート)または保護され、簡単に、外の世界にアクセスすることを許可されていない置くために設定されていますパブリック)、開示された方法は、オブジェクトがメッセージを受け入れることであるからです。Pythonでは、2つだけのプロパティとメソッドにアクセスし、それはあなたがプロパティが始まる2つのアンダースコアとして使用する名前で私有財産である場合は、次のコードは、これを確認することができ、パブリックとプライベートです。

「__」と変数名の前に#プライベート変数
#あなたがプライベート変数を使用する必要がある場合は、その本当の名前を表示するには、dir(クラスを())を使用することができます。
#プライベート変数/関数は、直接クラス内で呼び出すことができます。
#の場合あなたは、変数を反映したい/機能は、あなたが使用できることが特に重要です「_」

クラスTest:

        デフ__init __(自己、FOO):
              自己.__ FOO FOO =

        デフ__bar(自己):
               プリント(自己.__ FOO)
               プリント( '__バー')


DEFメイン():
         テスト=テスト( 'こんにちは')
         #1はAttributeError: 'テスト'オブジェクトが'__bar'は属性がありません
         テスト.__バー()
         #1はAttributeErrorを'テスト'オブジェクトは属性'__foo'持たない
         プリント(試験.__ FOO)を


__name__ == "__main__"の場合:
       メイン()

しかし、Pythonは文法から厳格なプライバシーのプライベートプロパティまたはメソッドを保証するものではありませんが、ルールがまだの名前を変更することができます知っていれば、それだけで、実際には、それらへのアクセスを「妨げ」にプライベートプロパティや名前の変更の方法を提供しますそれらへのアクセスは、次のコードは、これを確認することができます。この設定の理由は、「我々は、すべてここに同意成人している」という有名な格言、によって説明することができます。ほとんどのプログラマは、自分の行動に責任をより良いクローズドよりオープンし、プログラマと思いますので。

クラスTest:

        デフ__init __(自己、FOO):

              自己.__ FOO FOO =

        デフ__bar(自己):
               プリント(自己.__ FOO)
               プリント( '__バー')


DEFメイン():
       テスト=テスト( 'こんにちは')
       test._Test__bar()
       プリント(test._Test__foo)


__name__ == "__main__"の場合:
     メイン()

 

 

おすすめ

転載: www.cnblogs.com/WANGRUNZE/p/11311407.html