我有一个由不同 block 组成的二维数组,所有 block 都继承自 Block。我想检查我点击的方 block 是否是泥土类型的方 block ,如下所示:
clickedblock = getClickedBlock()
if isinstance(clickedblock, Dirt):
place a block
else:
don't place a block
我听说 isinstance
不好,应该避免,因为它会在代码中创建分支。 isinstance
什么时候使用比较好?
对于我的问题,另一个更麻烦的解决方案是在 Block 中有一个名为“id”的字段,然后检查它是否等于某个表示 Dirt 的常量。但这听起来很糟糕,而且比简单的 isinstance
更容易出错。
最佳答案
您的示例似乎是 isinstance()
的合法用例。
并不是说 isinstance()
不好,多态性通常可以用于相同的目的(这会在使用类的地方产生更清晰的代码)。
但有时,isinstance()
正是您所需要的。例如,检测变量是否为字符串的 pythonic 方法是 isinstance(var, basestring)
。
关于python - 使用 Python `isinstance` 是否正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13636149/