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