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

Pythonのゲッターとセッター


データのカプセル化の目的で、ほとんどのオブジェクト指向言語はゲッターとセッターのメソッドを使用します。これは、オブジェクトクラスの属性を他のクラスから隠して、他のクラスのメソッドによってデータが誤って変更されないようにするためです。

名前が示すように、ゲッターはプライベート属性へのアクセスまたはプライベート属性の値の取得を支援するメソッドであり、セッターはプライベート属性の値の変更または設定を支援するメソッドです。

プライベート属性へのアクセス

以下に、クラスを作成し、初期化し、追加のメソッドを作成せずに変数にアクセスするためのコードを記述します。

class year_graduated:
   def __init__(self, year=0):
      self._year = year

# Instantiating the class
grad_obj = year_graduated()
#Printing the object
print(grad_obj)
#Printing the object attribute
print(grad_obj.year)

出力

上記のコードを実行すると、次の結果が得られます-

<__main__.year_graduated object at 0x00F2DD50>
0

最初のprintステートメントは作成されたオブジェクトの詳細を提供しますが、2番目のprintオブジェクトはprivate属性のデフォルト値を提供します。

ゲッターとセッターの使用

以下の例では、クラスを作成し、isを初期化してから、それぞれにgetterメソッドとsetterメソッドを追加します。次に、クラスをインスタンス化し、これらのgetterメソッドとsetterメソッドを使用して、これらのメソッドの変数にアクセスします。したがって、setterメソッド内にロジックを隠すことができます。

class year_graduated:
   def __init__(self, year=0):
      self._year = year

   # getter method
   def get_year(self):
      return self._year

# setter method
def set_year(self, a):
self._year = a

grad_obj = year_graduated()
# Before using setter
print(grad_obj.get_year())

# After using setter
grad_obj.set_year(2019)
print(grad_obj._year)

出力

上記のコードを実行すると、次の結果が得られます。

0
2019

属性を非公開にする

次の例では、メソッドをプライベートにして、その中の変数を外部の呼び出し関数で操作できないようにする方法を示します。これらは、クラス内の関数によってのみ操作できます。 2つのアンダースコアを前に付けると、非公開になります。

class year_graduated:
   def __init__(self, year=32):
      self._year = year

   # make the getter method
   def get_year(self):
      return self.__year

   # make the setter method
   def set_year(self, a):
      self.__year = a

grad_obj = year_graduated()
print(grad_obj._year)

# Before using setter
print(grad_obj.get_year())
#
# # After using setter
grad_obj.set_year(2019)
print(grad_obj._year)

出力

上記のコードを実行すると、次の結果が得られます。

32
AttributeError: 'year_graduated' object has no attribute '_year_graduated__year'

プライベートメソッドからの値の読み取り

いいえ、プロパティメソッドを使用し、getterメソッドを使用せずにプライベート属性値にアクセスすることはできません。

class year_graduated:
   def __init__(self, year=32):
      self._year = year

   @property
   def Aboutyear(self):
      return self.__year

   @Aboutyear.setter
   def Aboutyear(self, a):
      self.__year = a

grad_obj = year_graduated()
print(grad_obj._year)

grad_obj.year = 2018
print(grad_obj.year)

出力

上記のコードを実行すると、次の結果が得られます。

32
2018

  1. Python-Kivyのボタンアクション

    Kivyは、マルチタッチアプリなどの革新的なユーザーインターフェイスを利用するアプリケーションを迅速に開発するためのオープンソースのPythonライブラリです。これは、Androidアプリケーションとデスクトップアプリケーションの開発に使用されます。この記事では、ボタンが押されたときにイベントを使用する方法を説明します。 次の例では、水平のBoxLayoutにボタンとラベルを作成しました。ボタンとラベルに最初のテキストを付けます。次に、ボタンをクリックするためのイベントを作成します。これにより、ボタンとラベルの両方のテキストが変更されます。これは単一のPythonファイルです。 例 from

  2. Pythonでの継承

    この記事では、Python3.xでの継承と拡張クラスについて学習します。またはそれ以前。 継承は実際の関係をうまく表し、再利用性を提供し、推移性をサポートします。開発時間が短縮され、メンテナンスが容易になり、拡張も容易になります。 継承は大きく5つのタイプに分類されます- シングル 複数 階層的 マルチレベル ハイブリッド 上の図に示されているように、継承とは、実際に親クラスのオブジェクトを作成せずに、他のクラスの機能にアクセスしようとするプロセスです。 ここでは、単一の階層型継承の実装について学習します。 単一継承 例 # parent class class Studen