HYトリビュートに加藤ミリヤなど有名アーティストがコラボ

pythonの__call__()の使い方についてですが、通常は下記の例のような場合、applicationを関数にしたapplication(environ, start_response) みたいな使い方になると思うのですが、下記の例のような
オブジェクトの名前であるapplicationそのものとして呼ばれた場合、どのような使い方になるのでしょうか?


import time
import RPi.GPIO as GPIO
from webob import Request, Response

pinled = 12 #pin number
GPIO.setmode(GPIO.BOARD)
GPIO.setup(pinled, GPIO.OUT)
GPIO.output(pinled, 0)

html = """
<form method="post"> State:
<input type="text" name="state" value="%s">
<input type="submit" name="button" value="Set">
</form>
"""

class WebApp(object):
def __call__(self, environ, start_response):
req = Request(environ)
if req.path == '/':
state = int(req.params.get('state', '0'))
GPIO.output(pinled, state)
resp = Response(html % str(state))
else:
resp = Response() #error

return resp(environ, start_response)

application = WebApp()

if __name__ == '__main__':
from wsgiref.simple_server import make_server
port = 8080
httpd = make_server('', port, application)
print('Serving HTTP on port %s...' % port)
try:
httpd.serve_forever()
except KeyboardInterrupt: #Ctrl + C
GPIO.cleanup()

質問者からの補足コメント

  • applicationで呼び出した場合、__call__(self, environ, start_response)が実行されると思っていいのでしょうか?
    また、その場合、どのような場合に省略が可能なのでしょうか?

    No.1の回答に寄せられた補足コメントです。 補足日時:2018/04/13 00:17

A 回答 (1件)

当然


applicationを関数にしたapplication(environ, start_response) みたいな使い方になる
はずです.
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング