さまざまなブロックの 2D 配列があり、すべて Block から継承しています。クリックしたブロックが、次のように Dirt タイプのブロックかどうかを確認したい:
clickedblock = getClickedBlock()
if isinstance(clickedblock, Dirt):
place a block
else:
don't place a block
isinstance
コードにフォークが作成されるため、これは悪いことであり、避けるべきだと聞いたことがあります。何時isinstance
の利用が良いでしょうか?
私の問題に対するもう1つのより面倒な解決策は、「id」と呼ばれるブロックのフィールドを持ち、それがダートを意味する定数に等しいかどうかを確認することです。しかし、それは非常に悪いように聞こえ、単純なisinstance
.