py:内建函数用法分析

type()

type()函数本身是一个类,有两种调用方式

class type(object)
class type(name, bases, dict)

class type(object)
传入单个对象时,返回的是对象的类型,其作用跟object.__class__方法一样。 但不建议用该函数检测对象的类型,更推荐使用isinstance()来检测对象类型。具体为什么可以参考如下例子:

class A:
    pass

class B(A):
    pass

isinstance(A(), A)  # returns True
type(A()) == A      # returns True
isinstance(B(), A)    # returns True
type(B()) == A        # returns False

对于子类,type函数就不太行了。如果需要更深入理解,请参看python判断变量类型时,为什么不推荐使用type()方法 这个问题下的回答。

class type(name, bases, dict)
传入三个参数的时候,type返回一个新的type对象。如

X = type('X', (object,), dict(a=1))
X.__name__ # return 'X'
X.__bases__ # return (object,)
X.__dict__ # return 一个字典,其中有一项为 'a': 1

也就是可以通过传入名字,基类,字典来生成一个新的type对象。由此反推可以发现,传入一个参数的话,不止是返回对象的类型,其实也是生成了一个对象对应的type类型对象,也就是说

type(object).__name__
type(object).__bases__
type(object).__dict__

都是存在的,分别返回对象的名字,基类,以及所有的dict. 从而,如果我们需要打印出来该对象对应的类的名字,就用type(object).__name__好啦。虽然其他地方没看出来有啥卵用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值