我有一个由不同方块组成的2D数组,它们都继承自Block类。我想检查我点击的方块是否是泥土类型的方块,如下所示:
clickedblock = getClickedBlock()
if isinstance(clickedblock, Dirt):
place a block
else:
don't place a block
我听说isinstance
是不好的,应该避免使用,因为它会在代码中创建分支。什么时候使用isinstance
会更好呢?
解决我的问题还有另一种更繁琐的方法,就是在Block中添加一个名为'id'的字段,然后检查它是否等于某个代表Dirt的常量。但那听起来很糟糕,而且比简单的isinstance
更容易出错。
if clickedblock.is_placeable(position): ...
或者try: clickedblock.place(position)
。 - Steven Rumbalskiisinstance
是合理的,什么情况下应该避免使用它。 - Dennis