2017-02-03 8 views
-3

多くの人がPythonで静的な使用を説明しましたが、強調されていないようです。いくつかの他の主要言語では、静的とは、静的データがスコープ内の一意の(唯一の)コピーであることを意味します。私は大きなVSOP87データセットを使用するいくつかの天文オブジェクトをコーディングしています。ただし、すべてのクラス/派生クラスまたはクラスのインスタンスは、特定のデータセットのみを使用します。 C++/Java/Cでは、これらのデータを静的に使用することで簡単に目的を達成できます。 C++/C#/ Javaで例えば、コードはほとんど以下のように見えます:それを使用するすべてのクラス/インスタンスの一意のデータを保持する方法は?

public class Earth 
{ 
..... 
static earthVSOP87XYZ[][] = {.....}; // in a very large size 
} 

すべての地球のインスタンスは、earthVSOP87XYZのコピーのみを共有し、データが十分に封入されています。同じ結果を得るためのPython 3の方法はありますか?

+1

問題を説明するコードサンプルを示してください。 Pythonの静的クラス変数は、他の言語と同じように動作します。クラスのスコープ内に存在し、インスタンス数に関係なく一意です。 – BartoszKP

+0

Pythonで「静的」とはどういう意味ですか? –

+0

ありがとうBartoszKP! class TwoDimList: _Val = [範囲内のj(6)] def __init __(自己):(範囲内のd1)(6):範囲内D2ため (6): self._Val [D1]、[D2] = random.randint(0、9) DEF printVal(自己): プリント(self._Val) b1.printVal() b2.printVal() 両方とも同じ番号です。 b1とb2が_Valの同じインスタンスを使用しているようです。 –

答えて

0

BartoszKPのおかげで、Pythonクラスで定義されたデータセットは、他の言語では静的な動作をすると指摘しました。

class TwoDimList: 
    _Val = [ [ i for i in range(6) ] for j in range(6)] 

    def __init__(self) : 
     for d1 in range(6): 
      for d2 in range(6): 
       self._Val[d1][d2] = random.randint(0, 9) 

    def printVal(self) : 
     print(self._Val) 

b1.printVal() 
b2.printVal() 
関連する問題