Python:自动对象生成和命名

时间:2012-08-14 19:35:17

标签: python class object automation increment

我们在

中有一个包含一些数学函数的类
class MyObjects(object):
    q=1      #could be any number
    def f(x,y):
        return q*y+x    #could be any mathematical function

假设我们要创建100个名为object_1object_2 ... object_100的新对象,并且所有这些对象都必须包含变量{{ 1}}已定义,但为每个对象定义为qq_1 ... q_2但我们希望每次创建对象时都会增加q的值,如{{1} } 等等。如前所示,所有对象必须使用为每个对象命名的类的f(x,y)函数,如q_100if q=1: q_1=q+1 q_2=q_1+1 ... f_1。生成的对象数量将由用户使用f_2设置,这就是我想要自动执行此过程的原因,这非常麻烦,需要手动执行#34;通过添加代码中的一百个对象。那么我可以自动化这个程序吗? Python begginer,monty python退伍军人lol。如果您能以更精确的方式对其进行改写,请随时编辑该问题。

1 个答案:

答案 0 :(得分:5)

定义类属性q和实例attribue q。 每次创建新实例时,MyObjects.q都会递增,并且递增的值将分配给self.q

class MyObjects(object):
    q=0
    def __init__(self):
       MyObjects.q+=1
       self.q=MyObjects.q

    def f(self,x,y):
        return self.q*y+x
inp=input("Enter number of objects: ")
dic={}
for x in range(1,inp+1):
    dic[x]=MyObjects()

<强>输出:

>>> dic[1].q
1
>>> dic[2].q
2
>>> dic[3].q
3
>>> dic[1].f(2,5)
7
>>> dic[2].f(2,5)
12
>>> dic[3].f(2,5)
17