Python の __init__.py ってこんな使い方もあったんだ…

posted in: Tips | 0

はじめに

faunaDB の python api の使い方が pydoc みたいなドキュメントを読んでいるだけではイマイチよくわからず、これを使ってるアプリの実例を github で探して(2個しかみつからず)そのうちのAnna Spyszさんの Serverless REST API を読んでて、「あ、こんな使い方ができるんだ、オサレだな」と思ったお話です

変数 client はどこで初期化してる?

create.py とか見てると faunaDB の client クラスを普通につかってるんだけど、アレはクレデンシャルとかで初期化しておかないと使えない筈、一体どこで初期化してるんだろう?

from todos import client, TODOS

from faunadb import query

def create(event, context):

    # write the todo to the database
    created = client.query(query.create(TODOS, {'data': data}))

    # create a response
    response = {
        "statusCode": 200,
        "body": json.dumps(make_result(created))
    }

    return response

todos の client をインストールしてるけど、todos に client.py なんかないし...

__init__.py

todos の __init__.py をみると

client = FaunaClient(secret=os.environ['FAUNADB_SECRET'])

TODOS = Ref('classes/todos')
ALL_TODOS = query.index('all_todos')

正解

なるほど、モジュールがインポートされたときに最初に呼ばれる __init.py で client を初期化しておいて、以下のモジュールではそれを使ってるんですね
\
init__.py ってこんなふうにモジュールの共通変数の初期化に使うとオサレですね

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.