zoukankan      html  css  js  c++  java
  • python的class(类)中的object是什么意思?

    那写object和不写object有什么区别?

    好的,再用代码来理解它们的区别.

    1.  
      # -.- coding:utf-8 -.-
    2.  
      # __author__ = 'zhengtong'
    3.  
       
    4.  
       
    5.  
      class Person:
    6.  
          """
    7.  
          不带object
    8.  
          """
    9.  
          name = "zhengtong"
    10.  
       
    11.  
       
    12.  
      class Animal(object):
    13.  
          """
    14.  
          带有object
    15.  
          """
    16.  
          name = "chonghong"
    17.  
       
    18.  
      if __name__ == "__main__":
    19.  
          x = Person()
    20.  
          print "Person", dir(x)
    21.  
       
    22.  
          y = Animal()
    23.  
          print "Animal", dir(y)

    运行结果

    1.  
      Person ['__doc__', '__module__', 'name']
    2.  
      Animal ['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', 
    3.  
      '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', 
    4.  
      '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'name']

    Person类很明显能够看出区别,不继承object对象,只拥有了__doc__ , __module__ 和 自己定义的name变量, 也就是说这个类的命名空间只有三个对象可以操作.

    Animal类继承了object对象,拥有了好多可操作对象,这些都是类中的高级特性。

    对于不太了解python类的同学来说,这些高级特性基本上没用处,但是对于那些要着手写框架或者写大型项目的高手来说,这些特性就比较有用了,比如说tornado里面的异常捕获时就有用到__class__来定位类的名称,还有高度灵活传参数的时候用到__dict__来完成.

    最后需要说清楚的一点, 本文是基于python 2.7.10版本,实际上在python 3 中已经默认就帮你加载了object了(即便你没有写上object)。

    这里附上一个表格用于区分python 2.x 和 python 3.x 中编写一个class的时候带上object和不带上object的区别.

    python 2.x python 2.x python 3.x python 3.x
    不含object 含object 不含object 含object
    __doc__ __doc__ __doc__ __doc__
    __module__ __module__ __module__ __module__
    say_hello say_hello say_hello say_hello
      __class__ __class__ __class__
      __delattr__ __delattr__ __delattr__
      __dict__ __dict__ __dict__
      __format__ __format__ __format__
      __getattribute__ __getattribute__ __getattribute__
      __hash__ __hash__ __hash__
      __init__ __init__ __init__
      __new__ __new__ __new__
      __reduce__ __reduce__ __reduce__
      __reduce_ex__ __reduce_ex__ __reduce_ex__
      __repr__ __repr__ __repr__
      __setattr__ __setattr__ __setattr__
      __sizeof__ __sizeof__ __sizeof__
      __str__ __str__ __str__
      __subclasshook__ __subclasshook__ __subclasshook__
      __weakref__ __weakref__ __weakref__
        __dir__ __dir__
        __eq__ __eq__
        __ge__ __ge__
        __gt__ __gt__
        __le__ __le__
        __lt__ __lt__
        __ne__ __ne__

    原文地址:https://blog.csdn.net/DeepOscar/article/details/80947155

     
  • 相关阅读:
    对拍
    311随笔
    精彩才刚刚开始
    做不下去了,就开心一下吧。
    情书
    论Sue这个人呐(=@__@=)
    P1113 杂务
    P1546 最短网络 Agri-Net
    P2009 跑步
    P2814 家谱
  • 原文地址:https://www.cnblogs.com/yongzhou/p/14785355.html
Copyright © 2011-2022 走看看