0

中にいくつかの数学関数があるクラスがあります

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

object_1このクラスの、object_2...のような名前の100個の新しいオブジェクトを作成object_100 し、それらすべてに変数をq定義する必要がありますが、オブジェクトごとにq_1q_2...として定義するq_100としますが、オブジェクトが作成されるたびに、 qの値などif q=1: q_1=q+1 q_2=q_1+1f_1前に表示したように、すべてのオブジェクトは、、f_2...のように各オブジェクトに名前が付けられたクラスのf(x、y)関数を使用する必要がありますf_100。生成されるオブジェクトの数は、ユーザーが次のように設定します。input()これが、コードに100個のオブジェクトのようなものを追加することで、「手動」で実行するのが非常に面倒なこの手順を自動化したい理由です。では、この手順を自動化できますか?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 に答える