Re:ゼロから始める文系プログラマ

未経験がプログラミングを通して人生を変える

【Python・クラス】~メンバ①~


スポンサードリンク
 

f:id:ShotaNukumizu_1000:20210405111435p:plain

おはようございます!Shotaです。

今日も早速、Pythonに関する記事を書いていきます。

今日も引き続き「クラス」について解説していきます。

 

【目次】

 

メンバ

プライベート変数

クラスは、そこに用意されているメンバをいかに実装するかが非常に重要です。メンバの働きについてもう少し説明しておきましょう。

まずは、インスタンス変数のスコープについてです。インスタンス変数は、作成したインスタンスからアクセスできます。これらはパブリック変数(自由に変更可能な変数)といいます。

対してクラスの外からアクセスできない変数も必要となることがあります。外部からのアクセスで変更されることを想定しない変数や、クラス作成時には必要でも後で使うことのない変数です。この変数をパブリック変数にしておくと、誤って変更してしまうようなことも起こります。こうした者は、プライベート変数(特定のクラス内でしか使えない変数)として作成します。

プライベート変数は、変数名に_(アンダースコア)2つを付けて作成します。

例:valueをプライベート変数にすると、「__value

 

では、実際に以下のコードを書いて実行してみましょう。

 

#プライベート変数
class sample:
    def __init__(self):
        self.__msg = 'HELLO WORLD'
        self.num = 10

    def show(self):
        print(f'{self.num}: {self.__msg}')

ob1 = sample()
ob2 = sample()
ob2.__msg = 'HELLO'
ob2.num = 0
ob1.show()
ob2.show()

 

 ▼実行結果

10: HELLO WORLD
0: HELLO WORLD

 

ここでは、プライベート変数__msgとパブリック変数numの2つのインスタンス変数を__init__メソッドで用意してあります。インスタンスを2つ作成し、片方のインスタンス変数を変更してからprintで出力していきます。

__msgとnumの両方の値を変更しているはずですが、__msgのほうは値は変わっていません。プライベート変数はクラス外で 変更したものを定義しても、その変数そのものは変えられません。

 

クラスメソッド

 クラス変数のように、クラスから直接利用できるメソッドもあります。これはクラスメソッドと言います。ただし、コチラはインスタンスで実行する一般的なメソッドとは書き方が違うので注意が必要です。

以下のように書きます。

 

@classmethod

def メソッド名(cls,引数,...):

 ---実行する処理--- 

 

メソッド定義の前に「@classmethod」を絶対に忘れないようにしましょう。このように@の記号で始まるプログラムの印は、アノテーションと呼ばれます。アノテーションはメンバの性質を指定するのに利用されます。

クラスメソッドの定義では、引数にselfは用意されません。インスタンスそのものは存在しないからです。その代わりに、変数「cls」が用意されます。これは、このクラスメソッドが保管されているクラスのオブジェクトが代入されます。

 

以下のコードを書いて実行してみましょう。

 

#classmethod
class sample:
    message = 'HELLO WORLD'

    @classmethod
    def show(cls):
        print(cls.message)

sample.show()
sample.message = 'HELLO'
sample.show()

 

▼実行結果

HELLO WORLD
HELLO

 

クラスメソッドを利用すれば、インスタンスを作らずに直接クラスを呼び出すことができます。

 

まとめ

【本日のまとめ】

  • インスタンス変数は、基本的にはパブリック変数。外からアクセスできないプライベート変数は、変数名の最初にアンダースコア(_)を2つつける
  • クラスメソッドは、クラスから直接利用できるメソッド。メソッドの前に必ず「@classmethod」を書いて改行する。
  • クラスメソッドを利用すれば、インスタンスを作らずにクラスを呼び出せる。 

 

 

本ブログでは、こんな感じでPythonにまつわる情報や基本的な知識、Pythonの操作方法やニュースをたくさん紹介していきます。毎週日曜日に、普段とは趣向を変えて有名な自己啓発本・ビジネス書を要約・考察するブログを書いていきます。

この記事がいいと思った人はSNSにシェアしてくれると非常に嬉しいです!

明日も昨日に引き続き「クラス」を解説していきます。

今日も最後まで読んでくださりありがとうございました!

 

【参考図書】

gihyo.jp