python - 使用 Python `isinstance` 是否正确?

标签 python oop dynamic instance

我有一个由不同 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/

相关文章:

python - 如何将不是黑色的每个像素转换为某种颜色?

mysql - App Engine 中的 GoLang 动态 SQL 查询

Python 情节 : How to denote ticks on the axes as powers?

python - 正态分布的问题

python - 用 scipy 拟合 Gamma 分布中的位置参数

python - 理解 Django 的模型类

java - java继承中的隐藏方法

c++ - 遍历 txt 文件中的对象数组

.net - 将 GridView 绑定(bind)到 Dynamic 或 ExpandoObject 对象

.net - ASP.NET - 在 Page_Preinit() 或 Page_Init() 和 Page_Load() 中创建的动态控件