Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么isinstance()方法返回True(Python 3.xx)_Python_Python 3.x - Fatal编程技术网

为什么isinstance()方法返回True(Python 3.xx)

为什么isinstance()方法返回True(Python 3.xx),python,python-3.x,Python,Python 3.x,我还不太熟悉Python的OOP方面,所以这有点超出我的理解范围 >>> a=[[2,3,4]] >>> types = (list,str,int,str,int) >>> b=isinstance(a,types) True 无论在列表类型之后添加什么类型,表达式总是返回True 我已经读过isinstance()方法接受派生类类型,但我无法说服自己我知道这里发生了什么 这也是真的。是因为这三个人都属于同一个班级吗 >>&

我还不太熟悉Python的OOP方面,所以这有点超出我的理解范围

>>> a=[[2,3,4]]
>>> types = (list,str,int,str,int)
>>> b=isinstance(a,types)

True
无论在列表类型之后添加什么类型,表达式总是返回
True

我已经读过
isinstance()
方法接受派生类类型,但我无法说服自己我知道这里发生了什么

这也是真的。是因为这三个人都属于同一个班级吗

>>> isinstance([], (tuple, list, set))
True

这是因为当您将一个类型的元组作为第二个参数提供给isinstance时,它将作为“OR”(或any)工作,如果第一个参数的类型是该元组中的任何类型,它将返回True

范例-

>>> isinstance('asd',(str,bool,int))
True

这是因为当您将一个类型的元组作为第二个参数提供给isinstance时,它将作为“OR”(或any)工作,如果第一个参数的类型是该元组中的任何类型,它将返回True

范例-

>>> isinstance('asd',(str,bool,int))
True
文档字符串:

isinstance(object, class-or-type-or-tuple) -> bool
返回对象是类的实例还是其子类的实例。 使用类型作为第二个参数,返回该类型是否为对象的类型。 使用元组的表单,
isinstance(x,(a,B,…)
,是以下内容的快捷方式:

isinstance(x, A) or isinstance(x, B) or ... (etc.).
类型:
内置函数或方法

因此,它实际上是一个
语句。很清楚,对吧

文档字符串:

isinstance(object, class-or-type-or-tuple) -> bool
返回对象是类的实例还是其子类的实例。 使用类型作为第二个参数,返回该类型是否为对象的类型。 使用元组的表单,
isinstance(x,(a,B,…)
,是以下内容的快捷方式:

isinstance(x, A) or isinstance(x, B) or ... (etc.).
类型:
内置函数或方法


因此,它实际上是一个
语句。非常清楚,对吗?

< p>尽管列表中的代码>[][/]>被认为是Python中的一个迭代器,就像元组、字典和SET一样,它不是从同一个基础类派生出来的(除非你考虑<代码>对象< /代码>作为基本类型,这对于每种类型都非常重要)。 试试这个:

>>> [].__class__
<type 'list'>
>>> ().__class__
<type 'tuple'>
>>> {}.__class__
<type 'dictionary'>
>>> [].__class__.__bases__
<type 'object'>  # yeah sure

tuple
list
这样的类不是从同一个基类派生的子类,它们都只是通过提供
\uu inter\uuuuuuu()
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu()
方法来遵守
的协议。这是一个漂亮的鸭子打字。

< p>虽然列表中的代码>[][/]>被认为是Python中的一个迭代器,就像元组、字典和集合一样,它不是从同一个基础类派生出来的(除非你考虑<代码>对象< /代码>作为基本类型,这对于每种类型都非常重要)。 试试这个:

>>> [].__class__
<type 'list'>
>>> ().__class__
<type 'tuple'>
>>> {}.__class__
<type 'dictionary'>
>>> [].__class__.__bases__
<type 'object'>  # yeah sure
tuple
list
这样的类不是从同一个基类派生的子类,它们都只是通过提供
\uu inter\uuuuuuu()
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu()
方法来遵守
的协议。这是鸭子打字的妙处。

这是
真的
if。如果它是
真的
如果它是
真的
如果。你认为如果