Python:对象在哪里实例化,如何在对象创建过程中传递参数?

时间:2018-02-15 02:28:35

标签: python flask flask-restplus

我正在使用Python Flask和flask-restplus构建RESTful API。

这是一个scaled flask-restplus应用程序,我按照这里给出的页面(Scaling your project)来设计我的应用程序。

我想在对象instasiation期间将参数传递给Ratings类。 Ratings类使用flask-restplus给出的命名空间装饰器进行修饰。

我无法理解Ratings对象的实例位置,以便我可以将参数传递给该对象。我必须传递的参数是来自app.py文件的Ratings类的文件名(settings.json)。

非常感谢任何帮助。

我的目录结构如下:

|_>apis
|      |_> __init__.py
|      |_> ratings.py
|_>app.py

三个python文件是这样的:

#__init__.py

from flask_restplus import Api
from .ratings import api as ns1    

api = Api(version='1.0', title='Reviews Service',
          description='Hello Reviews',)

api.add_namespace(ns1)
# app.py

from flask import Flask
from apis import api

app = Flask(__name__)
api.init_app(app)
app.config.from_json('settings.json')

if __name__ == '__main__':
    logging.basicConfig(filename=app.config['LOGGING_FILE_LOCATION'], level=logging.INFO)

app.run()
# ratings.py

from db_interface import DBInterface
from flask_restplus import Resource, Namespace

api = Namespace('AppReviewRatings', description='"Ratings" related operations.',)


@api.route('/api/<version>/<metric_name>/<app_store_name>')
@api.doc(params={'version': '"1" (v1) or "2" (v2)',
                 'metric_name': '"rating" or "reviews"',
                 'app_store_name': '"apple" or "google"'})
class Ratings(Resource):
    @api.response(200, 'Success')
    @api.response(400, 'Validation Error')
    def get(self, version, metric_name, app_store_name):

        # I must receive settings.json as an argument from app.py file.
        db_interface = DBInterface(settings_file_path='settings.json')  
        parameters = {'app_store_name': app_store_name, 'hue_version': hue_version}

        result = db_interface.query(q_type=metric_name, params=parameters)
        return result

1 个答案:

答案 0 :(得分:0)

您可以在类中定义bool('') Out[302]: False 函数,如下所示:

__init__

您可以查看源代码 here here