更新类的属性作为参数更改:如何使经纪帐户类保持最新?

时间:2015-08-29 00:43:40

标签: python algorithmic-trading

如果一个类的实例的属性在不断变化的时刻如何保持类的实例的属性?

例如,我已经定义了一个描述我的股票交易经纪账户余额的类。我已经定义了一个函数来ping经纪API并返回一个JSON对象,其中包含各种参数的当前状态。然后将这些参数的状态设置为给定实例的属性。

import json
import requests
from ConfigParser import SafeConfigParser   

class Account_Balances:
    def Account_Balances_Update():
    """Pings brokerage for current status of target account"""
        #set query args
        endpoint = parser.get('endpoint', 'brokerage') + 'user/balances'
        headers = {'Authorization': parser.get('account', 'Auth'), 'Accept': parser.get('message_format', 'accept_format')}

        #send query
        r = requests.get(endpoint, headers = headers)
        response = json.loads(r.text)
        return response        

    def __init__(self):

        self.response = self.Account_Balances_Update()
        self.parameterA = response['balances']['parameterA']
        self.parameterB = response['balances']['parameterB']  

目前,此代码在创建实例时设置参数,但它们变为静态。

据推测,parameterAparameterB时刻正在发生变化,所以我需要在需要时让它们保持最新状态。更新参数需要重新运行Account_Balances_Update()函数。

在股票交易这样快速变化的环境中,什么是保持类的给定实例的属性为最新的pythonic方法?

1 个答案:

答案 0 :(得分:0)

为什么不创建更新方法?

class Account_Balances:
    @staticmethod
    def fetch():
        """Pings brokerage for current status of target account"""
        #set query args
        endpoint = parser.get('endpoint', 'brokerage') + 'user/balances'
        headers = {'Authorization': parser.get('account', 'Auth'), 'Accept': parser.get('message_format', 'accept_format')}

        #send query
        r = requests.get(endpoint, headers = headers)
        response = json.loads(r.text)
        balances = response['balances']

        return balances['parameterA'], balances['parameterB']

    def update(self):
        self.parameterA, self.parameterB = self.fetch()