先ほど学習したデータ型はクラスであり、クラス内ではさまざまなメソッドを使用できます。
クラスの定義ではclass キーワードを使用し、構文構造は次のとおりです。
className:''''クラスドキュメント'''コンテンツ
Name は、作成するクラスの名前です。名前に 2 つの単語を使用する場合は、その 2 つの単語の最初の文字を大文字にする必要があります。
クラスのドキュメントは、このクラスを理解するために書かれた情報です。
コンテンツは、変数、メソッド、属性などを含むクラスのクラス本体です。クラスを定義するときに一時的にコンテンツを追加する必要がない場合は、 pass ステートメントをプレースホルダー ステートメントとして使用できます。
クラスを定義しましょう。
classSchool: #このようにして、School という名前のクラスを定義します''''学校クラスを定義します''''passschool=School()#このようにして、このクラスを print(type(school))#パス出力と呼びますタイププリント(学校)
出力は次のとおりです。
<クラス'__main__.School'><__main__.Schoolobjectat0x03372DD8>
結果から、school がクラスであることがわかり、2 行目から、school が School クラスのインスタンスであることがわかります。
クラスを作成するとき、 __init__() メソッドが作成されることがよくあります。このメソッドは構築メソッドです。つまり、このメソッドはクラスが呼び出されるたびに使用され、パラメータもこのメソッドに渡されます。
このメソッドには self パラメータが含まれている必要があり、これが最初のパラメータである必要があります。このパラメータはインスタンス自体を指し、このクラスに存在するプロパティとメソッドにアクセスできます。
次の例を見てください。
classSchool: #このようにしてクラスを定義します。このクラスを呼び出したい場合は「学校のクラスを定義します」 def__init__(self):print('ここに __init()__ メソッドがあります')def__judge__( self) :print('このメソッドが呼び出されるかどうかを判定')school=School()
出力は次のとおりです。
これが __init()__ メソッドです
出力から、このクラスが呼び出されている限り、__init__ メソッドは自動的に呼び出されますが、次の __judge__ メソッドは呼び出されないことがわかります。
ループを使用して、このクラスが呼び出されるたびに init メソッドが使用されるかどうかを確認することもできます。
以下のコードを見てください。
classSchool:'''学校のクラスを定義します''count=0def__init__(self):School.count+=1print('これは __init()__ メソッドの %d 回目の使用です'%School.count)foriinrange(5 ):学校()
出力は次のとおりです。
__init()__ メソッドの最初の使用法は次のとおりです。 __init()__ メソッドの 2 番目の使用法は次のとおりです。 __init()__ メソッドの 4 番目の使用法は次のとおりです。メソッド これは __init()__ メソッドの 5 番目の使用法です。
出力から、このクラスを初めて呼び出すときに init メソッドを 5 回使用していることがわかります。その後、init メソッドが 1 ずつ追加されます。init メソッドの school.count が増加します。この例を通じて、init の使用方法を学ぶことができます。
関数を学習するとき、パラメータの転送は関数名で定義されており、クラスでは init メソッドを通じてより簡単にパラメータを転送できます。
次の例を見てください。
classGetAge:def__init__(self,name,age):self.name=nameself.age=ageprint('%s の年齢は %d'%(name,age))GetAge('シャオミン',18)
出力は次のとおりです。
シャオミンの年齢は18歳です
self は必須であり、最初に配置する必要があることに注意する必要があります。このクラスを呼び出すとき、init メソッドに含まれるパラメータの数 (self を除く) は、呼び出す実際のパラメータの数と等しくなければなりません。合格した。