GAE/PのExpandoの動的プロパティの存在判定など

Expandoでは動的にプロパティを設定できるので、その値を利用する場合には、その設定が存在するかどうかを判定するケースが多々あると思います。その場合、PythonのBuilt-in Functionsのなかの、「hasattr」を使えばできます。

例)

class MainHandler(webapp.RequestHandler):

  def get():
        es = ExpandoSample(key_name=u"KEY",
                name=u"TestName",
                param1=u"Param1",
                param2=True,
                param3=5)
        es.put()
        if hasattr(es, "param1"):
            logging.info("The es has a param1 attribute")  # Execute this line.
        else:
            logging.info("The es doesn't have a param1 attribute")
        if hasattr(es, "param4"):
            logging.info("The es has a param4 attribute")
        else:
            logging.info("The es doesn't have a param4 attribute")  # Execute this line.

また、同じくBuilt-in Functionsの「getattr」も、値を取得する際に、プロパティが存在しない場合にdefault値を指定できるので役に立つと思います。

getattr(es, "param1", u"None")  # Return u"Param1"
getattr(es, "param4", u"None")  # Return u"None"

2. Built-in Functions - Python v2.7.1 documentation

この記事が役に立った場合、シェアしていただけると励みになります!!