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