ホームページ  >  記事  >  バックエンド開発  >  Pythonのプロパティ構文の使い方を詳しく解説

Pythonのプロパティ構文の使い方を詳しく解説

高洛峰
高洛峰オリジナル
2017-03-26 18:56:472121ブラウズ

Python には C# の get set 構文に似たプロパティ構文があり、その関数には次の 2 つの点があります:

プロパティの getter メソッドと setter メソッドを実装する。以下の 2 つの点に焦点を当てて説明します:

クラス メソッドを読み取り専用属性として設定します

まず、次のコードを読んでください

class Book(object):
    def __init__(self, title, author, pub_date):
        self.title = title
        self.author = author
        self.pub_date = pub_date
 
    @property
    def des_message(self):
        return u'书名:%s, 作者:%s, 出版日期:%s' % (self.title, self.author, self.pub_date)

このコードでは、プロパティをデコレータとして使用して des_message 関数を変更し、そのこの関数は、関数 des_message をクラスのプロパティに変換するもので、読み取り専用です。効果は次のとおりです。

上の図に示すように、メソッドはプロパティになり、プロパティにアクセスすることでアクセスできます。ただし、その値を変更すると、AttributeError エラーが報告されます。これは読み取り専用です

Pythonのプロパティ構文の使い方を詳しく解説 属性の getter メソッドと setter メソッドを実装します

次に、次のコードを見てください:

class Array(object):
 
    def __init__(self, length=0, base_index=0):
        assert length >= 0
        self._data = [None for i in xrange(length)]
        self._base_index = base_index
         
    def get_base_index(self):
        return self._base_index
 
    def set_base_index(self, base_index):
        self._base_index = base_index
 
    base_index = property(
        fget=lambda self: self.get_base_index(),
        fset=lambda self, value: self.set_base_index(value)
    )

ここで、base_index 属性を設定します。 Property を使用する class Array は、base_index の fget および fset 関数を実装します。その効果は次のとおりです。

上の図に示すように、base_index は読み取りおよび書き込み可能です。

Pythonのプロパティ構文の使い方を詳しく解説最後に、

プロパティはPythonの優れた構文機能であり、プログラミングでは頻繁に使用する必要があります。

以上がPythonのプロパティ構文の使い方を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。