python object和type

一、object和type的关系

首先了解2条规则

1.若x是A的一个实例,且A是B的子类,那么x也是B的一个实例

2.若B是M的实例,且A是B的子类,那么A也是M的一个实例

首先type为object的子类,(A=type,B=object)

>>> issubclass(type,object)
True

其次object是type的实例(x=object,A=type)

>>> isinstance(object,type)
True

 规则1得出object是object的实例(B=object,M=object)

>>> isinstance(object,object)
True

 规则2得出type是object的实例

>>> isinstance(type,object)
True

 同样可以得到type是type自己实例

 

>>> isinstance(type,type)
True

 PS:python中所有类都是自己本身的子类

>>> class A:
...     pass
... 
>>> issubclass(A,A)
True

 二、object和python中的对象和类

python中的所有对象都是object的实例,所有类都是object的子类(除了旧式类)

>>> class A:
...     pass
... 
>>> type(A)
<type 'classobj'>
>>> isinstance(A,object)
True
>>> issubclass(A,object)
False

 PS:新式类与旧式类的区别

声明上:

>>> class A(object):
...     pass
... 
>>> class A:
...     pass
... 

  规则:

旧式类是广度优先

class A:
        value="a"
class B(A):
        pass
class C(A):
        value="c"
class D(B,C):
        pass
d=D()
print d.value

结果为“a",搜索基类为深度优先

新式类:

class A(object):
        value="a"
class B(A):
        pass
class C(A):
        value="c"
class D(B,C):
        pass
d=D()
print d.value

 结果为“c",广度优先

PS:p y3.0中2种声明都为新式类,若要声明旧式类,括号中需制定为旧式类

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值