クラスはオブジェクト指向プログラミングの一部です。オブジェクト指向プログラミングまたは略してOOPは、クラスと呼ばれる再利用可能なコードブロックの作成に専念しています。プログラムでクラスを使用する場合は、クラスからオブジェクトを作成します。これは、オブジェクト指向という用語の由来です。 Pythonは常にオブジェクト指向であるとは限りませんが、プロジェクトではオブジェクトを使用します。クラスを理解するには、いくつかの基本的なオブジェクト指向の用語を理解する必要があります。
一般的な用語
クラス:クラス。クラスはコードブロックの本体であり、確立されたモデルの属性と動作を定義します。このモデルは、現実の世界からのものでも、仮想ゲームでもかまいません。
属性:属性。一連の情報を集めたものです。クラスでは、属性は通常変数です。
行動:行動。動作は、メソッドの一部であるクラスで定義されます。つまり、クラスで定義された関数の一部です。
メソッド:メソッド。クラス内の関数は動作で構成されています。
オブジェクト:オブジェクト。オブジェクトはクラスのインスタンスです。オブジェクトには、クラス内のすべての属性の値が含まれています。クラスには任意の数のオブジェクトを作成できます。
ロケットクラスを詳しく見てみましょう
いくつかのクラスの基本的な用語を学びました。前のセクションで説明したロケットクラスに戻って分析しましょう。
__ init __()メソッド
次のように初期コードブロックを定義します。
classRocket():
# Rocket simulates a rocket ship for a game,
# or a physics simulation.
def __init__(self):
# Each rocket has an(x,y) position.
self.x =0
self.y =0
最初の行は、クラスがどのように作成されるかを示しています。キーワードクラスは、クラスを定義する準備をするようにPythonに指示します。クラス名の命名規則は変数の命名規則と同じですが、Pythonには、クラス名はラクダの場合でなければならないという確立された規則があります。つまり、各単語の先頭は大文字にする必要があり、下線は使用できません。クラス名の直後に括弧のペアが続きます。これまでのところ、括弧は空です。次の調査では、クラスが含まれている可能性があります。このクラスは、新しいクラスの基礎となるクラスです。
前後に2つの下線が付いている関数は、Pythonに組み込まれている特別な目的の関数です。 __init ()関数は特別な関数です。クラスのオブジェクトが作成されると、自動的に実行されます。これを初期化関数と呼んで、オブジェクトを使用する前にいくつかの必要なプロパティを初期化できます。この例では、 init __()関数がx属性とy属性を初期化します。
キーワードselfは少しわかりにくいかもしれません。 「自己」という言葉は、現在のオブジェクトを指します。クラスを作成すると、クラス内の指定された属性にアクセスできます。基本的に、クラス内のすべての関数は、最初のパラメーターとしてselfオブジェクトを必要とするため、クラス内のプロパティにアクセスできます。
それでは、クラスのメソッドを見てみましょう。
簡単な方法
次のコードは、Rocketクラスのメソッドを定義します。
classRocket():
# Rocket simulates a rocket ship for a game,
# or a physics simulation.
def __init__(self):
# Each rocket has an(x,y) position.
self.x =0
self.y =0
def move_up(self):
# Increment the y-position of the rocket.
self.y +=1
メソッドはクラス内の関数です。したがって、関数がメソッドで実行できることは何でも実行できます。
デフォルトでは、すべての関数が1つのパラメーターselfを受け入れる必要があります。これは、このメソッドを呼び出すオブジェクトへの参照です。 selfパラメータを使用すると、呼び出し元オブジェクトのプロパティにアクセスできます。この例では、selfを使用してRocketオブジェクトのyプロパティにアクセスします。このメソッドが1回呼び出されると、オブジェクトのyプロパティが1増加します。メソッドの動作を詳しく調べるために、次のコードを注意深く読み、それらの出力を観察してください。
classRocket():
# Rocket simulates a rocket ship for a game,
# or a physics simulation.
def __init__(self):
# Each rocket has an(x,y) position.
self.x =0
self.y =0
def move_up(self):
# Increment the y-position of the rocket.
self.y +=1
# Create a Rocket object, and have it start to move up.
my_rocket =Rocket()print("Rocket altitude:", my_rocket.y)
my_rocket.move_up()print("Rocket altitude:", my_rocket.y)
複数のオブジェクトを作成する
オブジェクト指向プログラミングの重要な目標は、再利用可能なコードを作成することです。クラスを作成したら、任意の数のオブジェクトを作成できます。通常、クラスは別のファイルに配置され、必要に応じてプログラムにインポートされます。したがって、クラスライブラリを作成し、これらのクラスをさまざまなプログラムで再利用できます。
クラスに複数のオブジェクトを作成します。例は次のとおりです。
classRocket():
# Rocket simulates a rocket ship for a game,# Rocket
# or a physics simulation.
def __init__(self):
# Each rocket has an(x,y) position.
self.x =0
self.y =0
def move_up(self):
# Increment the y-position of the rocket.
self.y +=1
# Create a fleet of5 rockets, and store them in a list.
my_rockets =[]for x inrange(0,5):
new_rocket =Rocket()
my_rockets.append(new_rocket)
# Show that each rocket is a separate object.for rocket in my_rockets:print(rocket)
コンテンツの拡張:
クラスとオブジェクトを知る
Pythonのすべてがオブジェクトであり、型の本質はクラスです。ですから、信じられないかもしれませんが、あなたは長い間クラスを使用してきました。
dict #タイプdictはクラスdictです
< class'dict'
d=dict(name='eva') #インスタンス化
d.pop('name') #dにメッセージを送信し、dのメソッドpopを実行します
' eva'
上記の例から判断すると、辞書は一種のデータ構造です。辞書について話すと、{}で表され、kvキーと値のペアが含まれていることがわかります。また、追加、削除、変更、およびチェックする方法もいくつかあります。しかし、私が辞書について話すとき、あなたは正確に何が辞書に保存されているかを知ることができますか?いいえ、クラスの場合、同じ特性属性とメソッドを持っていると言います。
特定の{'name': 'eva'}辞書、それは辞書であり、辞書のすべてのメソッドを使用でき、その中に特定の値があり、それは辞書のオブジェクトです。オブジェクトは、すでに存在する具体的な個人です。
より一般的な別の例を挙げましょう。たとえば、動物園があり、この動物園について説明したい場合、動物園のすべての動物は種類、虎、白鳥、ワニ、クマです。それらはすべて、身長、体重、出生時間、品種などの同じ属性を持ち、クロコダイルが泳ぐ、白鳥が飛ぶ、虎が走る、熊が食べるなどのさまざまな行動をします。
しかし、これらのタイガーベアは特定のものではなく、一種の動物です。それらはすべて高さと重さを持っていますが、この値が何であるかを判断する方法はありません。この時点で特定の虎が与えられ、死んでいない場合は、彼の身長を測定して体重を量ることができます。これらの値は特定になりますか?次に、特定のタイガーは特定のインスタンスとオブジェクトです。これ以上です。実際、すべての特定の虎には独自の高さと重さがあります。したがって、すべての虎は虎のカテゴリの対象です。
これまで、pythonオブジェクト指向プログラミングを理解する方法に関するこの記事を紹介しました。pythonオブジェクト指向プログラミングの詳細な説明については、ZaLou.Cnを検索してください。
Recommended Posts