0

我们有一个类,里面有一些数学函数

class MyObjects(object):
    q=1      #could be any number
    def f(x,y):
        return q*y+x    #could be any mathematical function

假设我们要创建 100 个名为 like object_1, object_2...object_100 的新对象,并且所有这些对象都必须q定义一个变量,但为每个对象定义为q_1, q_2...q_100但我们希望每次创建对象时都增加q 的值if q=1: q_1=q+1 q_2=q_1+1等。如前所述,所有对象都必须使用为每个对象命名的类的 f(x,y) 函数,例如f_1, f_2... f_100。生成的对象数量将由用户设置input()这就是我想自动化这个过程的原因,通过在代码中添加类似于一百个对象的东西来“手工”完成非常麻烦。那么我可以自动化这个过程吗?Python 初学者,巨蟒老手,哈哈。如果您可以以更准确的方式重新表述问题,请随时编辑问题。

4

1 回答 1

5

定义一个类属性q和一个实例属性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
于 2012-08-14T19:42:59.717 回答