Pythonのpropertyクラスによるクラス属性の取得、設定、削除を解説!

PRについて
※このサイトはアフィリエイト広告(Amazonアソシエイト含む)を掲載しています。
スポンサーリンク
※このサイトはアフィリエイト広告(Amazonアソシエイト含む)を掲載しています。
Pythonのpropertyクラスによるクラス属性の取得、設定、削除を解説! 関数メソッド辞典
Pythonのpropertyクラスによるクラス属性の取得、設定、削除を解説!
Pythonプログラミング逆引き大全

Pythonのpropertyクラスによるクラス属性の取得、設定、削除の具体的な使用例について解説します。

ごまこ
ごまこ

ごまおくん、こんにちは!!
今日はpropertyクラスについて詳しく教えてください!

ごまお
ごまお

propertyクラスは、クラスの属性に対してゲッター、セッター、デリータを定義するためのクラスですね!
具体的なプログラムも見ながら応用方法も詳しく学んでいきましょう!

Pythonのpropertyクラスは、クラスの属性に対してゲッター、セッター、デリータを定義するための強力な仕組みを提供しています。

これにより、クラスの属性へのアクセスを効果的に制御し、属性に関連する操作をカスタマイズできます。

この記事では、propertyクラスについて詳しく解説し、初心者でも理解しやすいプログラム例を紹介します。

propertyクラスの概要

propertyクラスは、クラスの属性に対してゲッター(getter)、セッター(setter)、デリータ(deleter)を提供します。

これにより、属性へのアクセスや操作をカスタマイズし、オブジェクトの振る舞いを柔軟に変更することができます。

propertyクラスの構文

propertyクラスの基本的な構文は以下の通りです。

property(fget=None, fset=None, fdel=None, doc=None)
  • fget(オプション): ゲッター関数。属性の値を取得するために呼び出されます。
  • fset(オプション): セッター関数。属性の値を設定するために呼び出されます。
  • fdel(オプション): デリータ関数。属性を削除するために呼び出されます。
  • doc(オプション): ドキュメンテーション文字列。属性に関する説明を提供します。

propertyクラスの使用例

具体的なプログラム例を通じて、propertyクラスの使い方を理解しましょう。

class Rectangle:
    def __init__(self, width, height):
        self._width = width
        self._height = height

    @property
    def width(self):
        print("Getting width")
        return self._width

    @width.setter
    def width(self, value):
        print("Setting width")
        if value < 0:
            raise ValueError("Width must be non-negative")
        self._width = value

    @width.deleter
    def width(self):
        print("Deleting width")
        del self._width

    @property
    def height(self):
        print("Getting height")
        return self._height

    @height.setter
    def height(self, value):
        print("Setting height")
        if value < 0:
            raise ValueError("Height must be non-negative")
        self._height = value

    @height.deleter
    def height(self):
        print("Deleting height")
        del self._height

# 使用例
rectangle = Rectangle(3, 4)

# widthの取得
print(rectangle.width)

# widthの設定
rectangle.width = 5

# widthの削除
del rectangle.width

# heightの取得
print(rectangle.height)

# heightの設定
rectangle.height = 6

# heightの削除
del rectangle.height

この例では、Rectangleクラス内でwidthheightというプロパティを定義しています。

各プロパティには@propertyデコレータで定義されたゲッターと、@<property_name>.setterデコレータで定義されたセッター、@<property_name>.deleterデコレータで定義されたデリータがあります。

propertyクラスの応用

propertyクラスを使用することで、以下のような柔軟で応用的な設計が可能です。

例① バリデーションを追加

class Circle:
    def __init__(self, radius):
        self._radius = radius

    @property
    def radius(self):
        return self._radius

    @radius.setter
    def radius(self, value):
        if value < 0:
            raise ValueError("Radius must be non-negative")
        self._radius = value

# 使用例
circle = Circle(2)

# バリデーションが適用される
circle.radius = 3
print(circle.radius)

# 実行結果
# 3

# 例外が発生する
try:
    circle.radius = -1
except ValueError as e:
    print(e)

# 実行結果
# Radius must be non-negative

例② 計算されたプロパティの作成

class Square:
    def __init__(self, side_length):
        self._side_length = side_length

    @property
    def side_length(self):
        return self._side_length

    @property
    def area(self):
        return self._side_length ** 2

# 使用例
square = Square(4)

# 計算されたプロパティの取得
print(square.area)

# 実行結果
# 16
ごまこ
ごまこ

なるほど!
propertyクラスの機能を用いることで、柔軟で堅牢なクラスを作成できたように思います!

ごまお
ごまお

その通りです!
システム開発といった領域ではクラスの設計や堅牢なクラスの開発が大切になりますので、ぜひ使ってみましょう!

まとめ

この記事では、Pythonのpropertyクラスについて解説しました。

propertyクラスを使用すると、クラスの属性に対してゲッター、セッター、デリータを定義し、属性にアクセスする際の振る舞いをカスタマイズできます。

初心者向けのプログラム例を通じて、propertyクラスの基本的な使い方を学び、応用的な利用法についても紹介しました。

これにより、より柔軟で効果的なクラスの設計が可能となります。

このサイトの記事一覧へは以下へアクセス!

Python自動処理の教科書
関数メソッド辞典
ゴマフリーダムをフォローする

コメント

達人に学ぶDB設計 徹底指南書

あたらしい機械学習の教科書 第3版

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

タイトルとURLをコピーしました