Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonのインスタンス間で共有されるクラスデータの回避


Pythonでクラスをインスタンス化すると、そのすべての変数と関数も新しいインスタンス化されたクラスに継承されます。ただし、親クラスの変数の一部を子クラスに継承させたくない場合があります。この記事では、そのための2つの方法を検討します。

インスタンス化の例

以下の例では、変数が特定のクラスからインスタンス加熱される方法と、インスタンス化されたすべてのクラス間で変数が共有される方法を示しています。

class MyClass:
   listA= []

# Instantiate Both the classes
x = MyClass()
y = MyClass()

# Manipulate both the classes
x.listA.append(10)
y.listA.append(20)
x.listA.append(30)
y.listA.append(40)

# Print Results
print("Instance X: ",x.listA)
print("Instance Y: ",y.listA)

出力

上記のコードを実行すると、次の結果が得られます-

Instance X: [10, 20, 30, 40]
Instance Y: [10, 20, 30, 40]

__inti__のプライベートクラス変数

I needメソッドを使用して、クラス内の変数をプライベートにすることができます。親クラスがインスタンス化されると、これらの変数はクラス間で共有されません。

class MyClass:
   def __init__(self):
      self.listA = []

# Instantiate Both the classes
x = MyClass()
y = MyClass()

# Manipulate both the classes
x.listA.append(10)
y.listA.append(20)
x.listA.append(30)
y.listA.append(40)

# Print Results
print("Instance X: ",x.listA)
print("Instance Y: ",y.listA)

出力

上記のコードを実行すると、次の結果が得られます-

Instance X: [10, 30]
Instance Y: [20, 40]

外部で変数を宣言することによって

このアプローチでは、クラス外の変数を再宣言します。変数が再び初期化されると、インスタンス化されたクラス間で共有されません。

class MyClass:
   listA = []

# Instantiate Both the classes
x = MyClass()
y = MyClass()

x.listA = []
y.listA = []
# Manipulate both the classes
x.listA.append(10)
y.listA.append(20)
x.listA.append(30)
y.listA.append(40)

# Print Results
print("Instance X: ",x.listA)
print("Instance Y: ",y.listA)
Output

出力

上記のコードを実行すると、次の結果が得られます-

Instance X: [10, 30]
Instance Y: [20, 40]

  1. Pythonでのバイオリン図の動作を示しますか?

    カテゴリ内に存在するデータを比較したい場合は、箱ひげ図が役立ちます。これは、四分位数を使用してデータセット内のデータ分布を理解できる方法です。ボックスから伸びる垂直線で構成されています。これらの拡張機能は、ひげとして知られています。これらのひげは、データが上位四分位数と下位四分位数の外側でどのように変化するかを示しています。これが、箱ひげ図がウィスカプロットとしても知られている理由です。データの外れ値は、個々の点としてプロットされます。 バイオリン図は、箱ひげ図とカーネル密度推定(KDE)を組み合わせたものです。データがどのように配布されたかを分析して理解する方が簡単です。バイオリンの広い部

  2. Python(lzma)を使用したLZMAアルゴリズムを使用した圧縮

    Lempel–Ziv–Markov連鎖アルゴリズム (LZMA)は、他の圧縮アルゴリズムよりも高い圧縮率を特徴とする辞書圧縮方式を使用して、ロスレスデータ圧縮を実行します。 Pythonのlzmaモジュールは、LZMAアルゴリズムを使用してデータを圧縮および解凍するためのクラスと便利な関数で構成されています。 このモジュールの機能はbz2モジュールの機能と似ていますが、LZMAFileクラスはBZ2Fileクラスと比較してスレッドセーフではありません。 ここでも、lzmaモジュールのopen()関数は、lzmaで圧縮されたファイルオブジェクトを開く最も簡単な方法です。 open() こ