python object和type

来源:互联网 发布:网络歌手受排挤 编辑:程序博客网 时间:2024/05/02 06:46

  一、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