我遇到了一个对象(配置对象)的问题,我希望修改python程序和外部API用户。如果我使用API并PUT新数据,则保存数据。如果我有Python程序尝试修改对象,我在进行GET时无法观察到这种变化。正如您所看到的,我将config.encoding更改为“test”,但在进行GET时,我没有观察到更改。我仍然看到编码设置为“ASCII”。我对Python比较陌生,可能会忽略一些简单的事情。
感谢。
config = util.Config()
class api_Config(Resource):
def get(self, id):
return [{"id": config.id,
"capture": config.capture,
"controller": config.controller,
"gateway_ip_address": config.gateway_ip_address,
"port": config.port,
"interval_rate": config.interval_rate,
"encoding": config.encoding}], 200
def put(self, id):
parser = reqparse.RequestParser()
parser.add_argument("capture")
parser.add_argument("controller")
parser.add_argument("gateway_ip_address")
parser.add_argument("port")
parser.add_argument("interval_rate")
parser.add_argument("encoding")
args = parser.parse_args()
config.capture = args["capture"]
config.controller = args["controller"]
config.gateway_ip_address = args["gateway_ip_address"]
config.port = args["port"]
config.interval_rate = args["interval_rate"]
config.encoding = args["encoding"]
return [{"id": config.id,
"capture": config.capture,
"controller": config.controller,
"gateway_ip_address": config.gateway_ip_address,
"port": config.port,
"interval_rate": config.interval_rate,
"encoding": config.encoding}], 200
if __name__== "__main__":
app = Flask(__name__)
api = Api(app)
config = util.Config()
api.add_resource(api_Config, '/<string:id>')
app.run(debug=True)
print config.encoding
config.encoding = "test"
答案 0 :(得分:0)
您可以在两个位置创建config
对象。一个是在第一行,你说config = util.Config()
看起来util.Config
是一个类,然后util.Config()
返回该类的一个实例,或者它是一个函数,无论那个函数是什么退货将分配给config
。无论哪种方式,这都是config
方法使用的api_Config.get
对象。
创建此配置对象实例的第二个位置是在if __name__== "__main__":
块之后,这将是一个全新的对象,并且不会被那些api处理程序使用。
您可能已经足够删除第二个定义并使用
if __name__== "__main__":
app = Flask(__name__)
api = Api(app)
api.add_resource(api_Config, '/<string:id>')
app.run(debug=True)
print config.encoding
config.encoding = "test"
不修改其余部分。