2017-10-15 15 views
0

だから私は大まかであるPythonのクラスを持っている:インスタンス化時に増加するPythonクラス変数を追跡します。

class Aircraft(): 
    number_of_airbus = 0 
    number_of_boeing = 0 
    ... 

一般的な考え方は、クラスがインスタンス化される際にボーイング社のエアバスや数の数はそれほどクラスが更新され、新たなインスタンス化される次の時間を増やす必要があるのどちらかということです番号が提供されます。

これは可能ですか、またはDBに総数を格納する必要がありますか?

+0

次の2つの異なる結果が得られます:あなたはクラス変数を使用するときは、(作成されたオブジェクトの数を取得します! =既存の)プログラムの実行では、DBを使用すると、プログラムのすべての実行で永久にカウントされます。 –

+0

クラスのインスタンスではなく、クラス自体の変数を参照する場合は、たとえば、Aircraft.number_of_airbusを参照できます。カウントをそのままにしたい場合は、 'init'でインクリメントすることができます。これがあなたにとって正しいことであるかどうかは別の問題です。 –

+0

@TomKarzes別のメソッドでインクリメントすることは可能でしょうか?__init__でインクリメントを行うことができませんか? – user7692855

答えて

0

Pythonでクラスレベルで定義されたすべての変数はあなたがnumber_of_airbusnumber_of_boeingを上げるときに、それは、この特定のクラスのすべてのインスタンスに反映されなければならない(インスタンス間で共有) 静的

と考えられています。変数の

アクセスは、クラス名を通じて次のようになります。

>>> class Aircraft: 
...  n = 1 
... 
>>> Aircraft.n 
1 
>>> air = Aircraft() 
>>> air.n 
1 
>>> Aircraft.n += 1 
>>> Aircraft.n 
2 
>>> air.n 
2 

ホープ、これは便利です

関連する問題