クラスは、オブジェクトの作成元となるユーザー定義のブループリントまたはプロトタイプです。クラスは、データと機能を一緒にバンドルする手段を提供します。新しいクラスを作成すると、新しいタイプのオブジェクトが作成され、そのタイプの新しいインスタンスを作成できるようになります。各クラス インスタンスには、その状態を維持するために属性を付けることができます。クラス インスタンスには、状態を変更するためのメソッド (クラスによって定義される) を持つこともできます。
クラスとオブジェクトを作成する必要性を理解するには パイソン 例を考えてみましょう。品種や年齢など、さまざまな属性を持つ犬の数を追跡したいとします。リストを使用する場合、最初の要素は犬の品種、2 番目の要素は年齢を表すことができます。 100 匹の異なる犬がいると仮定しましょう。では、どの要素がどの要素であるかをどうやって知ることができるでしょうか?これらの犬に他のプロパティを追加したい場合はどうすればよいでしょうか?これには組織性が欠けており、まさにクラスが必要です。
構文: クラス定義
class ClassName: # Statement>
構文: オブジェクトの定義
obj = ClassName() print(obj.atrr)>
クラスはユーザー定義の Python クラスのいくつかのポイント:
- クラスはキーワードクラスによって作成されます。
- 属性はクラスに属する変数です。
- 属性は常にパブリックであり、ドット (.) 演算子を使用してアクセスできます。例: 私のクラス.Myattribute
Python クラスの作成
ここで、class キーワードは、クラスを作成していることを示し、その後にクラス名 (この場合は Dog) が続きます。
リティク・ローシャンPython3
class Dog: sound = 'bark'>
Pythonクラスのオブジェクト
オブジェクトはクラスのインスタンスです。クラスは青写真のようなものですが、インスタンスはクラスのコピーであり、 実際の値 。それはもはやアイデアではなく、7歳のパグという品種の犬のような実際の犬です。多くの犬を飼ってさまざまなインスタンスを作成できますが、ガイドとしてのクラスがなければ、どのような情報が必要なのかがわからず、道に迷ってしまうでしょう。
オブジェクトは次のもので構成されます。
- 州: それはオブジェクトの属性によって表されます。また、オブジェクトのプロパティも反映されます。
- 行動: それはオブジェクトのメソッドによって表されます。また、他のオブジェクトに対するオブジェクトの反応も反映します。
- 身元: これにより、オブジェクトに一意の名前が付けられ、あるオブジェクトが他のオブジェクトと対話できるようになります。
クラス オブジェクトの宣言 (クラスのインスタンス化とも呼ばれます)
クラスのオブジェクトが作成されるとき、そのクラスはインスタンス化されると言われます。すべてのインスタンスは、クラスの属性と動作を共有します。ただし、これらの属性の値、つまり状態はオブジェクトごとに一意です。単一のクラスは任意の数のインスタンスを持つことができます。
例:
Pythonのクラスとオブジェクトの例
Python でオブジェクトを作成するには、クラスをインスタンス化してそのクラスの新しいインスタンスを作成する必要があります。このプロセスは、オブジェクトのインスタンス化とも呼ばれます。
Python3 # Python3 program to # demonstrate instantiating # a class class Dog: # A simple class # attribute attr1 = 'mammal' attr2 = 'dog' # A sample method def fun(self): print('I'm a', self.attr1) print('I'm a', self.attr2) # Driver code # Object instantiation Rodger = Dog() # Accessing class attributes # and method through objects print(Rodger.attr1) Rodger.fun()>
出力:
mammal I'm a mammal I'm a dog>
上の例では、基本的に Rodger という名前の犬であるオブジェクトが作成されます。このクラスには、Rodger が犬であることと哺乳類であることを示すクラス属性が 2 つしかありません。
説明 :
この例では、Dog クラスを作成しており、2 つのクラス変数を作成しています。 attr1 と attr2 。という名前のメソッドを作成しました 楽しい() これは文字列 I'm a, {attr1} と I'm a, {attr2} を返します。 Dog クラスのオブジェクトを作成し、 属性1 オブジェクトの。最後に、私たちは 楽しい() 関数 。
自己パラメータ
このオブジェクトのメソッドを myobject.method(arg1, arg2) として呼び出すと、これは Python によって自動的に MyClass.method(myobject, arg1, arg2) に変換されます。これがすべて特別です。 自己 についてです。
Python3 class GFG: def __init__(self, name, company): self.name = name self.company = company def show(self): print('Hello my name is ' + self.name+' and I' + ' work in '+self.company+'.') obj = GFG('John', 'GeeksForGeeks') obj.show()>
の 自己 パラメータでは Self を呼び出すことはできません。代わりに他の名前を使用できます。ここで self を somebody という単語に変更すると、出力は同じになります。
Python3 class GFG: def __init__(somename, name, company): somename.name = name somename.company = company def show(somename): print('Hello my name is ' + somename.name + ' and I work in '+somename.company+'.') obj = GFG('John', 'GeeksForGeeks') obj.show()>
出力: 両方のコードの出力は同じになります。
Hello my name is John and I work in GeeksForGeeks.>
説明:
この例では、GFG クラスを作成しており、 名前と会社名 コンストラクター内のインスタンス変数。という名前のメソッドを作成しました こんにちは() これは文字列「Hello my name is + {name} + and I work in +{company}+..」を返します。person クラス オブジェクトを作成し、名前を渡します。 ジョンと仲間たち GeeksForGeeks をインスタンス変数に追加します。最後に、私たちは 見せる() クラスの。
合格ステートメント
プログラムの実行は影響を受けません。 合格 声明の不作為。これは、プログラムが何もせずにコードのそのセクションをスキップできるようにするだけです。これは、Python の構文上の制約により有効なステートメントが要求されるが、有用なコードを実行する必要がない場合によく使用されます。
Python3 class MyClass: pass>
__init__() メソッド
の __熱い__ メソッドは次のコンストラクターに似ています。 C++ そして ジャワ 。コンストラクターは、オブジェクトの状態を初期化するために使用されます。メソッドと同様に、コンストラクターには、オブジェクトの作成時に実行されるステートメント (つまり、命令) のコレクションも含まれています。クラスのオブジェクトがインスタンス化されるとすぐに実行されます。このメソッドは、オブジェクトに対して実行したい初期化を行うのに役立ちます。
Python3 # Sample class with init method class Person: # init method or constructor def __init__(self, name): self.name = name # Sample Method def say_hi(self): print('Hello, my name is', self.name) p = Person('Nikhil') p.say_hi()>
出力:
Hello, my name is Nikhil>
説明:
この例では、 Person クラスを作成しており、 名前 コンストラクター内のインスタンス変数。文字列 Hello, my name is {name} を返す、say_hi() という名前のメソッドを作成しました。person クラス オブジェクトを作成し、名前 Nikhil をインスタンス変数に渡します。最後に、クラスのsay_hi()を呼び出しています。
__str__() メソッド
Python には、と呼ばれる特別なメソッドがあります。 __str__() 。これは、 クラス オブジェクトは文字列として表現される必要があります。これはオブジェクトに人間が判読できるテキスト表現を与えるためによく使用され、ロギング、デバッグ、またはユーザーのオブジェクト情報の表示に役立ちます。クラス オブジェクトを使用して組み込み関数 print() および str() を使用して文字列を作成すると、 __str__() 機能が自動的に使用されます。のオブジェクトを変更する方法を変更できます。 クラス を定義することで文字列で表現されます。 __str__() 方法。
Python3 class GFG: def __init__(self, name, company): self.name = name self.company = company def __str__(self): return f'My name is {self.name} and I work in {self.company}.' my_obj = GFG('John', 'GeeksForGeeks') print(my_obj)>
出力:
My name is John and I work in GeeksForGeeks.>
説明:
この例では、GFG という名前のクラスを作成しています。そのクラス内で 2 つのインスタンス変数を作成しています。 名前と会社名 。 __str__() メソッドでは、 名前 インスタンス変数と 会社 インスタンス変数。最後に、GFG クラスのオブジェクトを作成し、__str__() メソッドを呼び出します。
クラス変数とインスタンス変数
インスタンス変数 は各インスタンスに固有のデータ用であり、クラス変数はクラスのすべてのインスタンスで共有される属性とメソッド用です。インスタンス変数はコンストラクターまたはメソッド内で self を使用して値が割り当てられる変数ですが、クラス変数はクラス内で値が割り当てられる変数です。
コンストラクターを使用してインスタンス変数を定義します。
Python3 # Python3 program to show that the variables with a value # assigned in the class declaration, are class variables and # variables inside methods and constructors are instance # variables. # Class for Dog class Dog: # Class Variable animal = 'dog' # The init method or constructor def __init__(self, breed, color): # Instance Variable self.breed = breed self.color = color # Objects of Dog class Rodger = Dog('Pug', 'brown') Buzo = Dog('Bulldog', 'black') print('Rodger details:') print('Rodger is a', Rodger.animal) print('Breed: ', Rodger.breed) print('Color: ', Rodger.color) print('
Buzo details:') print('Buzo is a', Buzo.animal) print('Breed: ', Buzo.breed) print('Color: ', Buzo.color) # Class variables can be accessed using class # name also print('
Accessing class variable using class name') print(Dog.animal)>
出力 :
Rodger details: Rodger is a dog Breed: Pug Color: brown Buzo details: Buzo is a dog Breed: Bulldog Color: black Accessing class variable using class name dog>
説明:
Dog という名前のクラスは、 クラス変数 紐犬に動物をセット。クラス変数はクラスのすべてのオブジェクトによって共有され、クラス名を使用してアクセスできます。 Dog クラスには 2 つのインスタンス変数があります 品種と色。 後で、次の 2 つのオブジェクトを作成します。 犬 class を作成し、animal という名前のクラス変数を使用して両方のオブジェクトの値を出力します。
通常の方法を使用してインスタンス変数を定義します。
Python3 # Python3 program to show that we can create # instance variables inside methods # Class for Dog class Dog: # Class Variable animal = 'dog' # The init method or constructor def __init__(self, breed): # Instance Variable self.breed = breed # Adds an instance variable def setColor(self, color): self.color = color # Retrieves instance variable def getColor(self): return self.color # Driver Code Rodger = Dog('pug') Rodger.setColor('brown') print(Rodger.getColor())>
出力:
brown>
説明:
この例では、次の名前のクラスを定義しました。 犬 そして 私たちはを作成しました クラス変数 動物。インスタンス変数品種を作成しました。 コンストラクタ 。 Dog クラスは 2 つのメソッドで構成されます セットカラー そして コロを取得 r、インスタンス変数の作成と初期化、およびインスタンス変数の値の取得に使用されます。を対象にしました。 犬 クラスでインスタンス変数の値を茶色に設定し、その値をターミナルに出力しています。