标签:十分 获取 比较 and print 文件的 dfa 标题 tuple
isinstance
与type
的坑,这里给大家分享下,如果大家也遇到了同样的问题,希望本文能为大家解决疑惑把。A = [1,2,[3,4,[5,6,[7,8,[9,10]]]]]
递归
来解决这类问题:遍历这个列表,遇到是数字类型
的就直接打印,遇到列表类型
的继续“递归”。实现代码如下:def recursion(lis):
for i in lis:
if isinstance(i,int):
print(i,end=' ')
elif isinstance(i,list):
recursion(i)
if __name__ == '__main__':
A = [1,2,[3,4,[5,6,[7,8,[9,10]]]]]
recursion(A)
1 2 3 4 5 6 7 8 9 10
recursion
函数中使用了isinstance
去判断我们遍历的元素是列表类型还是int类型的,针对每一种类型我们做出不同的处理。isinstance“承认继承关系”
呢?上面的例子可能说明不了问题,我们在看下面这段代码:class GrandFather(object):pass
class Father(GrandFather):pass
class Son(Father):pass
son = Son()
print(isinstance(son,Son))
print(isinstance(son,Father))
print(isinstance(son,GrandFather))
Father
继承自GrandFather
,类Son
继承自Father
,对象son
是类Son
实例化的一个对象。True
True
True
实例化这个对象的类
;那么如果里面的参数是一个类呢?Python中一切皆对象!
type里面是一个对象
的话题:看下面这段代码:print(type(123))
print(type('123'))
print(type([1,2,3]))
print(type((1,2,3)))
print(type({1,2,3}))
数据对象
的类型,当然我们一眼就可以看出来是什么类型的,so easy~结果如下:<class 'int'>
<class 'str'>
<class 'list'>
<class 'tuple'>
<class 'set'>
class Son:pass
son = Son()
print(type(son))
Son
实例化出一个对象son
,那么结合上面的例子,type(son)
的值是什么呢?<class '__main__.Son'>
当前文件的一个叫Son的东东
,就是我们定义的Son类。class GrandFather:pass
class Father(GrandFather):pass
class Son(Father):pass
son = Son()
print(type(son) is Son)
print(type(son) is Father )
print(type(son) is GrandFather )
True
False
False
只有Son与type(son)相等
,也就是说,只有直接实例化这个对象的类才是type(对象)的类,即使有继承关系,type也不会“承认”这个类的父类的
type(cls)
没有,赶紧打开自己的IDE试试下面这段代码:class GrandFather:pass
class Father(GrandFather):pass
class Son(Father):pass
son = Son()
print(type(GrandFather))
print(type(Father))
print(type(Son))
元类
/惊恐/惊恐/惊恐标签:十分 获取 比较 and print 文件的 dfa 标题 tuple
原文地址:https://www.cnblogs.com/paulwhw/p/10637282.html