Python 3中变量的简单表达式

问题描述 投票:0回答:1

我需要使用一些浮点型变量用于两个目的:1。使用它的值来计算某些函数,2。改变这些变量的值。我知道如何一般地做,但我需要为我的浮点型变量有简单的简短符号。在下面的简单示例中,我添加了两个数字,我的目标是能够在下面的示例中编写类似'f(a,i)'而不是'a.vals [a.define_index [i]]'的smth。我需要在'='的左边和'='的右边写简单的表示法:

import numpy as np
class SomeClass(object):
    def __init__(self):
        self.vals=np.ones(10)
        self.define_index=[]
        for i in range(10):
            self.define_index.append(10-1-i)
a=SomeClass()
for i in range(10):
    a.vals[a.define_index[i]]=a.vals[a.define_index[i]]+1
print('sums =', a.vals)
python function variables namespaces
1个回答
2
投票

似乎你想为你的类型实现__getitem____setitem__。它允许你拨打[i]。这样做会使您的类型看起来像一个列表,所以您可能也希望实现__iter__,以便您可以使用for循环迭代它。

import numpy as np
class SomeClass(object):
    def __init__(self):
        self.vals=np.ones(10)
        self.define_index=[]
        for i in range(10):
            self.define_index.append(10-1-i)

    def __getitem__(self, i):
        return self.vals[self.define_index[i]]

    def __setitem__(self, i, value):
        self.vals[self.define_index[i]] = value

    def __iter__(self):
        for i in self.define_index:
            yield self.vals[i]

a=SomeClass()
for i in range(10):
    a[i] += 1
print('sums =', a.vals)

for val in a: # iterate over data, hiding define_index
    print(val)

PS。我已将您的增量缩短为+ = 1

© www.soinside.com 2019 - 2024. All rights reserved.