pythonでクラスを書く方法

クラス定義

Pythonでは、クラスの定義はclassキーワードを使用します。たとえば、学生情報を格納するクラスを定義します。

classStudent(object):
pass

クラス名の直後にクラス名、つまりStudentが続きます。通常、クラス名は大文字の単語で、その後に(object)が続き、クラスの継承元を示します。通常、適切な継承クラスがない場合は、オブジェクトクラスが使用されます。これは、すべてのクラスが最終的に継承するクラスです。

Studentクラスを定義した後、Studentクラスに基づいてStudentのインスタンスを作成できます。インスタンスの作成は、クラス名+()によって行われます。

 bart =Student()
 bart
<__ main__.Student object at 0x10a67a590 
 Student
< class'__main__.Student'

ご覧のとおり、変数bartはStudentのインスタンスを指し、次の0x10a67a590はメモリアドレスであり、各オブジェクトのアドレスは異なり、Student自体はクラスです。

属性をインスタンス変数に自由にバインドできます。たとえば、名前属性をインスタンスバーにバインドします。

 bart.name ='Bart Simpson'
 bart.name
' Bart Simpson'

これは、C ++などの静的言語とは異なります。オブジェクトにはいつでも属性を追加できます。

pythonでは、クラスの属性はC ++クラスのメンバー変数と同等であり、クラスのメソッドはC ++クラスのメンバー関数と同等です。

クラスはテンプレートとして機能できるため、インスタンスを作成するときに、バインドする必要があると思われる一部のプロパティを入力する必要がある場合があります。特別なinitメソッドを定義することにより、インスタンスが作成されると、名前やスコアなどの属性がそれにバインドされます。

classStudent(object):
 def __init__(self, name, score):
 self.name = name
 self.score = score

C ++と比較すると、__ init__関数はC ++クラスのコンストラクターと同等です。注:特別なメソッド「init」の前後に2つの下線があります。

initメソッドの最初のパラメーターは常にselfであり、作成されたインスタンス自体を表すことに注意してください。したがって、selfは作成されたインスタンス自体を指すため、initメソッド内でさまざまなプロパティをselfにバインドできます。

initメソッドでは、インスタンスを作成するときに空のパラメーターを渡すことはできません。initメソッドに一致するパラメーターを渡す必要がありますが、selfを渡す必要はありません。Pythonインタープリター自体がインスタンス変数を渡します。

 bart =Student('Bart Simpson',59)
 bart.name
' Bart Simpson'
 bart.score
59

通常の関数と比較すると、クラスで定義されている関数は異なるだけです。つまり、最初のパラメーターは常にインスタンス変数selfであり、呼び出すときにこのパラメーターを渡す必要はありません。さらに、クラスのメソッドは通常の関数と同じであるため、デフォルトのパラメーター、変数パラメーター、キーワードパラメーター、および名前付きキーワードパラメーターを引き続き使用できます。

get_gradeなど、定義したStudentクラスに新しいメソッドを追加できます。

classStudent(object):...

 def get_grade(self):if self.score  =90:return'A'
 elif self.score  =60:return'B'else:return'C'

ナレッジポイントの拡張:

ビルドと初期化

私は誰もがこの最も基本的な魔法の方法__init__に精通していると信じています。これにより、オブジェクトの初期化動作をカスタマイズできます。そして、x = SomeClass()を呼び出すと、__ init__が最初に呼び出されるわけではありません。実際、__ new__と呼ばれるメソッドがあります。実際、インスタンスを作成し、作成の目的を達成するために初期化子にパラメーターを渡します。オブジェクトのライフサイクルの終わりに、__ del__が呼び出されます。これらの3つの魔法の方法を詳しく見てみましょう。

__ new__(cls,[…)

オブジェクトがインスタンス化されると、__ new__が最初に呼び出されます。他のパラメータをクラスの__init__に渡します。 __new__はめったに使用されず、特にサブクラスが不変の型(タプルまたは文字列)を継承する場合にその目的があります。 __new__の詳細については、これ以上追求する予定はありません。これは、非常に詳細な説明がPython Docsですでに説明されているため、あまり役に立たないためです。

__ init__(self,[…)

クラスの初期化。最初のビルド呼び出しで渡されたものはすべて取得されます(たとえば、x = SomeClass(10、 'foo')を呼び出すと、__ init__は渡された10と 'foo'をパラメーターとして渡します。init Pythonクラス定義でほぼ普遍的に使用されています)

__ del__(self)

new__と__init__がオブジェクトのコンストラクターである場合、 del__はデストラクターです。 del xとして宣言された動作は実装されていません(このようなコードはx .__ del ()として解釈されません)。代わりに、オブジェクトがガベージコレクションされたときの動作として定義されます。これは、ソケットやファイルオブジェクトなど、追加のクリーンアップが必要なオブジェクトに役立つ場合があります。ただし、オブジェクトがまだ生きていて、解釈が終了したときに del__が実行される保証はないため、このような__del__を適切なコーディング方法の代わりに使用することはできません。 (完了したときと同じように、常に接続を閉じる必要があります。しかし、実際には、__ del__は危険な状況で呼び出されるため、実行されることはほとんどありません。使用するときは注意してください!)

これで、Pythonでクラスを作成する方法に関するこの記事は終わりです。Pythonでクラスを作成するための関連する方法については、ZaLou.Cnを検索してください。

Recommended Posts

pythonでクラスを書く方法
pythonでreturnを書く方法
pythonでwinプログラムを書く方法
pythonでtryステートメントを書く方法
pythonでゲームを書く方法を教えてください
告白プログラムをpythonで書く方法
python設定ファイルの書き方
pythonコードでラップする方法
Pythonで括弧を省略する方法
pythonで数値をフィルタリングする方法
PythonでExcelを読む方法
pythonでエラーを表示する方法
Pythonで変数を理解する方法
pythonで変数をクリアする方法
PythonでSQLiteを使用する方法
pythonでキャッシュファイルを削除する方法
Pythonでサードパーティモジュールを導入する方法
pythonでnull値を表す方法
pythonでテキストファイルを保存する方法
pythonでid関数を実行する方法
Pythonでサードパーティモジュールをインストールする方法
pythonでエラーをカスタムキャッチする方法
Pythonでプライベート属性を定義する方法
Pythonでカスタムモジュールを追加する方法
Pythonでグローバル変数を理解する方法
インストールされているモジュールをpythonで表示する方法
さまざまなシステムでのPythonopenメソッド
pythonで辞書を並べ替える方法
pythonで背景音楽を追加する方法
pythonで相対パスを表す方法
pythonでguiを書く
pythonでround関数を使用する方法
Pythonでzip関数を使用する方法
Pythonのインターフェースに基づいてプログラミングする方法
ubuntuサーバー環境にpythonをインストールする方法
Pythonゲームで重力をシミュレートする方法
pythonでformat関数を使用する方法
pythonでアシスタントを実行するコードを使用する方法
pythonでコード自動プロンプトを設定する方法
pythonでファイルとディレクトリを削除する方法
ダウンロードしたモジュールをpythonでインストールする方法
Pythonでファイルを読み書きする方法
pythonで連続乗算計算を実行する方法
Pythonicコードの書き方
pythonをすばやく学ぶ方法
pythonプラグインをアンインストールする方法
pythonオブジェクトを理解する方法
パイソンタプルの使い方
Pythonでのパッケージの導入を理解する方法
pythonで番号のリストを理解する方法
pythonで写真を自動的にダウンロードする方法の例
IEを添付ファイルとしてPythonで保存する方法
Ubuntu14.04でPython仮想環境を作成する方法
UbuntuにHelmをインストールする方法
ubuntuでhanlpを使用する方法
pythonスレッドプールの使用方法
pythonで円の領域を見つける方法
pythonプログラムを保存する方法
Ubuntu14.04にmysqlをインストールする方法
CentOS8にPython3.8をインストールする方法
Ubuntu18.04にPython3.8をインストールする方法