Wtforms isinstance 无法正常工作
Wtforms isinstance not working correctly
这是一个例子
import wtforms
isinstance(wtforms.StringField, wtforms.Field)
为什么实例 return 是假的?
如果wtforms.StringField是继承自wtforms.Field,因为在这种情况下应该return isinstanse True。
为什么它 return 是错误的?如何解决这个问题?
isinstance
检查 object 是否是 class type 的实例。在你的例子中,wtforms.StringField
是一个 class 类型 (它可以像一个对象一样工作,因为 Python 有 first-class everything),并且有输入 type
。为此,您实际上需要 issubclass
。
即:
>>> isinstance(OrderedDict(), dict)
True
>>> isinstance(OrderedDict, dict)
False
>>> isinstance(OrderedDict, type)
True
>>> issubclass(OrderedDict, dict)
True
OrderedDict
派生自 dict
。因此,OrderedDict()
的对象是dict
的实例,而OrderedDict
是[=36的子class =] dict
.
这是一个例子
import wtforms
isinstance(wtforms.StringField, wtforms.Field)
为什么实例 return 是假的? 如果wtforms.StringField是继承自wtforms.Field,因为在这种情况下应该return isinstanse True。 为什么它 return 是错误的?如何解决这个问题?
isinstance
检查 object 是否是 class type 的实例。在你的例子中,wtforms.StringField
是一个 class 类型 (它可以像一个对象一样工作,因为 Python 有 first-class everything),并且有输入 type
。为此,您实际上需要 issubclass
。
即:
>>> isinstance(OrderedDict(), dict)
True
>>> isinstance(OrderedDict, dict)
False
>>> isinstance(OrderedDict, type)
True
>>> issubclass(OrderedDict, dict)
True
OrderedDict
派生自 dict
。因此,OrderedDict()
的对象是dict
的实例,而OrderedDict
是[=36的子class =] dict
.