Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python:如何在循环中创建不同的实例?_Python_Loops_Methods_Instance_Names - Fatal编程技术网

python:如何在循环中创建不同的实例?

python:如何在循环中创建不同的实例?,python,loops,methods,instance,names,Python,Loops,Methods,Instance,Names,我需要创建一个类的多个实例,然后使用它的方法来查找输出。用多行代码编写代码很简单,但我需要一种更有效的方法。基本上,以下是我在循环中要做的事情: 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

我需要创建一个类的多个实例,然后使用它的方法来查找输出。用多行代码编写代码很简单,但我需要一种更有效的方法。基本上,以下是我在循环中要做的事情:

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次…

你可以列出你所有的a和Y,或者你甚至可以列出一个列表,基本上是一个包含一个或多个列表的列表。比如说

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)]
  (0, 2)
2
所以它基本上是这样做的,它说x是0,然后遍历y的所有数字,y遍历了所有的数字,x变为1,然后y再次遍历所有的数字,直到达到所有可能的组合。你可以使范围(0100)虽然,可能滞后,如果你打印出整个名单(就像我不小心做了哈哈) 因此,您可以看到,这是一种创建包含许多变量的长列表的好方法

但是您也可以调用一个特定的号码,比如我们想要第三个列表,然后我们将调用print函数(第5行),如下所示:

我们说2是因为python从0开始计数。 这将打印出:

[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
  (0, 2)
2
这是我们想要的第三张名单。现在我们要打印列表中的第二项,数字2,然后我们将调用print函数,如下所示:

   print(aList[2][1])
这将打印出:

[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
  (0, 2)
2

完全符合我们的要求。

假设使用python 2.7.10。您可以尝试以下内容(在类定义后添加):

这将运行10次,随机数介于1。。。一百


免责声明:未经测试的代码--只是给出一个大概的想法。

列出一个对象列表。你是想做
y1=A1.job()
?顺便说一句,我想你需要在decorator为你的
job
方法工作。@Priyansgoel,你能详细说明一下吗?我对python非常陌生,不知道如何才能做到这一点,谢谢。