我正在写一个程序,需要一个函数来跟踪多个不同货币钱包在多个交易所的模拟价值。我编写了一个类来声明、持有和检索模拟余额:
>>> class Balance:
def __init__(self,exchange,currency):
self.exchange = exchange
self.currency = currency
def update(self,val):
self.val = val
def get(self):
qty = self.val
if qty > 0:
return qty
else:
return False
每个'balance keeper'对象由currency_exchange
引用,如下所示。手动声明对象时,一切正常:
但是,我希望遍历以下列表并动态声明对象并按此方式分配值:
^{3}$我遇到的问题是变量balance_keeper
没有按照我的预期操作。例如,看上面最后两行。在
不是初始化对象okex_ADA
,然后再初始化一个新对象okex_XMR
,这个对象只是被每次迭代覆盖,balance_keeper
应该保存的变量根本没有被初始化;相反,循环只是继续将对象分配给一个简单的变量名“balance_keeper”,而不是它应该保存的变量(例如okex_XMR):
>>> okex_XMR.get()
Traceback (most recent call last):
File "<pyshell#73>", line 1, in <module>
okex_XMR.get()
NameError: name 'okex_XMR' is not defined
如您所见,它不是创建一个新的对象,而是在迭代时覆盖上一个对象:
>>> balance_keeper.get()
10.0
我做错什么了?如何迭代这些列表,并正确初始化每个变量,而不是简单地覆盖占位符变量?在
我想你没能理解python的一些语法。看看这个代码: ^{cd1>。如我所见,您所期望的是
balance_keeper
将成为类似okex_XMR
的变量。不,不是那样的。在上面的赋值只将
balance_keeper
分配给一个字符串。不是一个变量。请记住,cur+'_'+ex
是一个表达式,它返回字符串!在
balance_keeper
之后,balance_keeper=Balance(ex,cur)
的将被覆盖。这里的想法是保存多个钱包,每个钱包都由一对货币和汇率标识。这导致使用字典,其中key是
(cur, ex)
的元组。使用字典通过指定字符串名称来存储对象
然后可以通过以下方式访问对象:
^{pr2}$相关问题 更多 >
编程相关推荐