我需要创建一个类的多个实例,然后使用它的方法来查找输出。可以直接用多行编写代码,但我需要一种更有效的方法。基本上,这是我想要在循环中做的事情:
class test(object):
...
def job(self,x='hi',y=4):
return y+len(x)
A1 = test()
y1 = A1.job(x = 'word_1',y=12)
A2 = test()
y2 = A2.job(x = 'word_2',y=5)
A3 = test()
y3 = A3.job(x = 'word_3',y=-12)
A4 = test()
y4 = A4.job(x = 'word_4',y=1)
A5 = test()
y5 = A5.job(x = 'word_5',y=120)
A6 = test()
y6 = A6.job(x = 'word_6',y=-1)
A7 = test()
y7 = A7.job(x = 'word_7',y=10)
当然,这并不是那么难,但如果我想这样做100次......
答案 0 :(得分:0)
您可以列出所有A的列表以及所有Y的列表,或者甚至可以列出列表,基本上是列表中包含1个或更多列表的列表。例如
aList = [[A1, Y1], [A2, Y2], [A3, Y3]] # Note, never name lists this way haha
然后引用它们你会说:
print(aList[1][1])
第一个1进入[A2,Y2]列表,然后第二个进入并获取Y2变量。
这样你就不需要所有变量了,因为你可以创建一个迭代所有这些变量的for循环,从而可以拥有无限的这些列表。 例如:
aList = [] # Creates an empty list
for x in range(0, 3): # This will go over the numbers from 0-2,
for y in range(0, 3): # This will do the same.
aList.append( (x, y) )
print(aList)
这将打印出来:
[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
所以这基本上做的是它说x是0,然后遍历y的所有数字,y经历了所有数字,x变为1,然后y遍历所有数字再次,直到达到所有可能的组合。你可以制作范围(0,100)但是,如果你打印整个列表可能会滞后(就像我不小心做了哈哈) 因此,您可以看到这是创建包含许多变量的长列表的好方法。
但你也可以拨打一个特定的号码,比如我们想要第三个列表,然后我们将打印功能调用(第5行):
print(aList[2])
我们说两个因为python从0开始计数。 这将打印出来:
(0, 2)
这是第三个列表,就像我们想要的那样。现在我们要打印该列表中的第二项,数字2,然后我们将打印函数称为:
print(aList[2][1])
这将打印出来:
2
完全像我们想要的那样。
答案 1 :(得分:0)
假设python 2.7.10。你可以尝试一下(在你的类定义之后添加):
import random
[... class definition stuff ...]
nums = random.sample(xrange(1, 101), 10)
i = 0
for k in nums:
A = test()
print A.job('word_%s' % i, k)
i += 1
这将以1 ... 100之间的随机数运行10次。
免责声明:未经测试的代码 - 只是为了提供一般性的想法。