見出し画像

36歳が初めてプログラムを勉強してみる(25日目)

今日もpaizaでPythonの勉強しました。

今日学んだことです。

【学んだこと】

・クラスのアクセス制限を使ってみた

次のようなことをやりました。

【やったこと】

クラスのアクセス制限を使ってみた

今回はクラスの中でしか使えないようにアクセス制限をしてみました。

アクセス制限するためには、クラスのメソッドの変数名の最初にアンダースコアー(_)を2つつけます。
このことをプライベート変数やプライベートメソッドと呼びます。

プライベート変数やメソッドは、クラスの外からは呼び出すことができなくなります。

【クラスのアクセス制限方法】

#プライベートメソッド
class クラス名:
 def __init__(self, 変数名1, 変数名2):
  self.変数名1 = 変数名1
  self.変数名2 = 変数名2

 def メソッド名1(self):
  print(self.変数名1)
  self.__メソッド名2(self, 変数2)

 def __メソッド名2(self):
  print(self.変数名1) 

#プライベート変数
class クラス名:
 def __init__(self, 変数名3, 変数名4):
  self.__変数名3 = 変数名3
  self.__変数名4 = 変数名4

 def メソッド名(self):
  print(self.__変数名3)

 def メソッド名(self):
  print(self.__変数名4)

それでは実際のコードを見ていきましょう。

--コード--
class Shukan1:
  def __init__(self, name, date):
      self.name = name
      self.date = date

  def say_shukan(self):
      print("hello " + self.name)
      self.__say_date(self)

  def __say_date(self, date):
      print("hello " + self.date)
      
routine1 = Shukan1("習慣1","3日目")
routine1.say_shukan() #routine1 .say_date()

class Shukan2:
   def __init__(self, name, date):
       self.__name = name
       self.__date = date

   def say_shukan(self):
       print("hello " + self.__name)

   def say_date(self):
       print("hello " + self.__date)

routine2 = Shukan2("習慣2", "5日目")
routine2.say_shukan()
routine2.say_date() #print (routine2.__date)

--出力結果--
hello 習慣1
hello 3日目
hello 習慣2
hello 5日目

このコードでは、1つ目のクラス「Shukan1」にプライベート変数にして、2つ目のクラス「Shukan2」にプライベートメソッドを使っています。

上でも説明しましたが、プライベートにするにはメソッドまたは、変数の前にアンダースコアー(__)を2つつけます。

そのため、「routine1.say_date()」や「print(routine2.__date)」をクラスの外からの呼び出そうとしてもエラーとなります。

本日はここまでです。

以上です。ありがとうございました。

この記事が気に入ったらサポートをしてみませんか?