Python
 Computer >> コンピューター >  >> プログラミング >> Python

初心者のためのPythonのクラスとオブジェクト

今日はクラスについて話します。いいえ、学校の授業ではありません。

プログラミングでは、クラスには独自の定義があります。クラスは、オブジェクトのコーダーによって作成された青写真です。オブジェクトに格納できるデータと、その特定のオブジェクトで実行できるメソッドを定義します。

Pythonはオブジェクト指向プログラミング言語です。これは、オブジェクトとクラスを使用してデータを格納する開発パターンを使用することを意味します。

オブジェクト指向のアプローチは、コードの繰り返しを減らすのに役立ち、コードの読み取りと保守が容易になります。クラスとオブジェクトは、Java、Python、C++などの多くのプログラミング言語の一部です。

このガイドでは、クラスとは何か、それらがどのように機能するか、Pythonでクラスを宣言する方法について説明します。途中で役立ついくつかの例を見ていきます。

クラスとは何ですか?

クラスは、オブジェクトを定義するために使用する青写真です。

あなたが家の青写真を見ていると想像してください。その青写真は、ドアがどこに行くか、窓がどこに配置されるかなどを概説します。プログラミングのクラスも同様です。クラスは、オブジェクトに格納できるデータの青写真を提供します。

クラスはclassを使用して定義されます キーワード。 2つの関数を持つPlayerというクラスを定義することから始めましょう。

参加者の81%は、ブートキャンプに参加した後、自分たちの技術的な仕事の見通しについてより自信を持っていると述べました。今日のブートキャンプにマッチしましょう。

平均的なブートキャンプの卒業生は、ブートキャンプの開始から最初の仕事を見つけるまで、キャリアの移行に6か月も費やしませんでした。

クラスプレーヤー:

""" This is a class for a player """
	name = "Luke"

	def wield_sword(self):
		print("You have wielded your sword.")

	def drink_health_potion(self):
		print("You have consumed a health potion.")

このクラスは、ビデオゲームのプレーヤーを表します。属性とメソッドの両方が含まれています。属性がクラス内にある場合、属性はインスタンス変数と呼ばれることがよくあります。

1つの方法では剣を振るうことができ、もう1つの方法では健康ポーションを飲むことができます。クラスには、nameという1つのクラス変数が含まれています。これにより、プレーヤーのデフォルト名が保存されます。

selfという単語を使用していることに注意してください このコードで数回。自己はそれがどのように聞こえるかです:クラス自体の表現。 Selfには、特定のクラス内に格納されているすべての値が含まれているため、メソッド内ですべての値にアクセスできます。

コードを実行しても、何も起こりません。どうしたの?クラスが青写真であると私たちがどのように言ったか覚えていますか?それが何も起こらない理由です。ブループリントを有効にするには、ブループリントを使用して何かを行う必要があります。

オブジェクトとは何ですか?

オブジェクトは、クラスの単一のインスタンスです。これは、クラスによって作成されたブループリントを使用して定義されます。

ゲームの新しいプレーヤー、ルークのオブジェクトを作成しましょう。

luke = Player()

Lukeというオブジェクトを作成しました。これで、オブジェクトは、クラス内に格納されているすべてのデータと、クラスに関連付けられているメソッドにアクセスできます。

luke = Player()
print(luke.name)
luke.wield_sword()

私たちのコードは次を返します:

ルーク

あなたは剣を振るった。

このコードでは、nameの値を出力しています。 Lukeオブジェクトの属性。クラスの属性にアクセスするには、クラスの名前、ドット、アクセスするインスタンス属性の順に指定する必要があります。これはしばしばdot notationと呼ばれます 。

デフォルトでは、nameの値 ルークに設定されました。これを変更する方法については、後ほど説明します。

wield_sword() とも呼ばれます クラス。このクラスを呼び出したとき、wield_sword() の内容 Playerクラス内のメソッドが実行されました。そのため、「剣を振った」というメッセージがコンソールに出力されました。

クラスのオブジェクトはいくつでも宣言できます。そのため、クラスは非常に強力です。複数の異なるオブジェクト間でクラス内に格納されているものと同じメソッドとデフォルト値を再利用できます。

クラスコンストラクタ

コンストラクターを使用すると、クラス内のデータを初期化できます。コンストラクターメソッドは、特定のクラスのオブジェクトを宣言した直後に実行されます。

コンストラクターの名前は__init__()です。 。コードに二重アンダースコア(__)が含まれる関数を目にすることに慣れているかもしれません。これらの関数は、事前定義された目的があるため、特殊関数と呼ばれます。この場合、__init__の目的 クラスを初期化することです。

以前に作成したPlayerクラスを更新して、クラスの先頭にこのメソッドを含めます。

def __init__(self):
	print("Your character has been created.")

このメソッドは、クラスで変数またはメソッドを定義する前に指定する必要があります。以前のメインコードをもう一度実行してみましょう。

luke = Player()
print(luke.name)
luke.wield_sword()

私たちのコードは次を返します:

キャラクターが作成されました。

ルーク

あなたは剣を振るった。

__init__とは呼ばなかった 私たちのメインプログラムのメソッドですが、とにかく実行されました。これは、クラスのオブジェクトを作成するときにコンストラクターが自動的に実行されるためです。

以前、nameの値を割り当てました 私たちのクラスの変数はルークです。これは、プレーヤーをルークと呼びたい場合に便利ですが、プレーヤーが異なる名前を持つことができる場合は実用的ではありません。

そこでコンストラクターが登場します。プレーヤーに名前を割り当てることができるコンストラクターを作成しましょう。

class Player:
	def __init__(self, name):
		self.name = name

このコードを使用すると、各Playerオブジェクトにパラメーターを渡すことができます。このパラメーターは、プレーヤーの名前を表します。次に、プレーヤーの名前を示すメソッドを作成します。

class Player:
	def __init__(self, name):
		self.name = name

	def get_name(self):
		print("Your name is " + self.name)

Leahという名前のプレーヤーのPlayerクラスの新しいインスタンスを作成しましょう。

leah = Player("Leah")
leah.get_name()

私たちのコードは次を返します:

あなたの名前はリアです。

nameの値を割り当てました リアへのオブジェクトの変数。これは、クラスで参照する場合は常に、その値がLeahであることを意味します。コンストラクターは、クラスのオブジェクトを作成するとすぐに実行されるため、呼び出すことを心配する必要はありません。

次に、メソッドget_name() を呼び出します。 プレーヤーに関連付けられた名前を出力します。

クラスには、必要な数のパラメーターを追加できます。

class Player:
	def __init__(self, name, player_type):
		self.name = name
		self.player_type = player_type

	def get_name(self):
		print("Your name is " + self.name)

	def get_player_type(self):
		print(self.name + " is a " + self.player_type + ".")

この例では、Playerクラスは2つのパラメーターをサポートしています。 1つはプレーヤーの名前(name)を表し、もう1つはそのプレーヤーのタイプ(player_type)を表します。 )。このクラスのオブジェクトを作成しましょう:

leah = Player("Leah", "Mage")
leah.get_name()
leah.get_player_type()

私たちのコードは次を返します:

あなたの名前はリアです。

リアは魔術師です。

指定した両方の初期値は、クラスでアクセスできます。

結論

クラスを使用すると、コードの繰り返しを減らすことができます。クラスを定義したら、その構造を使用して、必要な数のオブジェクトを定義できます。繰り返しが減った結果、コードが読みやすくなり、保守が容易になります。

これで、エキスパートのように独自のPythonクラスを作成する準備が整いました。


  1. Pythonでの属性とメソッドへのアクセス

    オブジェクト指向プログラミング言語として、Pythonはオブジェクトに重点を置いています。クラスは、オブジェクトが作成される青写真です。 Pythonの各クラスは、属性としての関数を含む多くの属性を持つことができます。 クラスの属性へのアクセス クラスの属性を確認し、それらの属性を操作するために、以下に示すように、多くのPython組み込みメソッドを使用します。 getattr() −クラスの属性にアクセスするために使用されるPythonメソッド。 hasattr() −クラス内の属性の存在を確認するために使用されるPythonメソッド。 setattr() −クラス

  2. Pythonのファイルオブジェクト?

    Pythonでは、ファイルの読み取りまたは書き込みを試みるたびに、ライブラリがネイティブに処理されるため、ライブラリをインポートする必要はありません。 最初に行うことは、組み込みのopen関数を使用してファイルオブジェクトを取得することです。 open関数はファイルを開き、ファイルオブジェクトを返します。ファイルオブジェクトには、情報を取得したり、開いたファイルを操作したりするために使用できるメソッドと属性が含まれています。 ファイルとは何ですか? ファイルに対して操作を行う前に、まずファイルとは何かを理解しましょう。ファイルは、関連情報を保存するためのディスク上の名前付きの場所です。フ