私はMaps
と呼ばれるクラスを持っており、そこから2つのリストl
とlm
を作成しました。 l
は特定のイベントで変更する予定ですが、lm
(メモリリスト)はそのままにしておきます。Python - リストクラスが変更されないようにする方法はありますか?
リストクラスが変更されないようにする方法はありますか? あなたを騙してください!あなたは異なるクラスを使用して、このようなものを定義したい場合があります
if goalC.value>0 and goalC.value==lm.countX():
lvlC.increment(1)
#lvl.config(text=" | Level Complete ", bg="limegreen")
l.nextLevel(lvlC.value)
lm.nextLevel(lvlC.value)
muvC.reinitialize()
nbMuv.config(text="Moves: "+str(muvC.value))
pushC.reinitialize()
nbPush.config(text=" | Pushes: "+str(pushC.value))
goalC.reinitialize()
nbGoal.config(text=" | Goals: "+str(goalC.value))
lvl.config(text=" | Current level: "+str(lvlC.value), bg="darkgray")
print("New moves",muvC.value, "New pushes",pushC.value, "New level",lvlC.value)
print("New countX: ", lm.countX())
print("New goals: ", goalC.value)
for i in l:
print(i)
for i in lm:
print(i)
can.delete("all")
for i in r:
for j in r:
time.sleep(.005)
can.create_rectangle(j*n, i*n, j*n+n, i*n+n, fill=fillSquare(i,j, l), outline="darkslategray")
「変更を防止する」とはどういう意味ですか?物事はそれ自身では変わらず、何かがそれを修正しなければならない。投稿したコードでは、何が起きているのか、何を望むのかを把握するのに十分ではありません。 [mcve]を作成してみてください。 – tzaman
「(あなたの)リストクラスが変更されるのを防ぐ」という非常に簡単な方法があります。変更しないでください。これがあなたの質問に答えることができない場合は、より具体的な詳細とユースケースを使って質問に言いたいことがあります。 –
また、継承(実装の継承 - それはPythonで継承を使用する唯一の理由です)は、ほとんどが構成/委任の非常に不自由な形式です。代わりに、コンポジション/デリゲートを使って 'Maps'クラスを書き直すことを強くお勧めします。最初はもう少し作業が必要ですが、実装全体の柔軟性と柔軟性を実現します。 –