LoginSignup
6
6

More than 5 years have passed since last update.

アクセサを一つのメソッドにまとめる

Posted at

Pythonでちゃんとプロパティのアクセサを設定する場合、property関数を使って以下の様に書くのが一般的。たとえばFooクラスにbarプロパティをくっつける場合。

class Foo(object):
    def __get_bar(self):
        return self.__bar

    def __set_bar(self, value):
            self.__bar = value

    def __del_bar(self):
            del self.__bar

    bar = property(__get_bar, __set_bar, __del_bar,
                   doc="short explanation for bar property")

ただこの書き方だと1つのプロパティに対して3つもメソッドを作る必要がありごちゃごちゃする。

そんなとき、これをまとめて以下のように書くことも可能。上と下は同じ意味になる。

class Foo(object):
    def bar():
        doc = "short explanation for bar property"

        def fget(self):
            return self.__bar

        def fset(self, value):
            self.__bar = value

        def fdel(self):
            del self.__bar

        return locals()

    bar = property(**bar())

fdel()docはいらなければ省略可能。

一つのプロパティに対して同じ名前のメソッド一つにまとまるからちょっと見やすくなる...気がする。

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6