开发者

python中class(object)的含义是什么以及用法

目录
  • python class(objphpect)的含义
  • class, class()和class(object)的区别
    • 为什么要继承object类
    • class, class()和class(object)的区别
  • 总结

    python class(object)的含义

    在python2中有区别,在Python3中已经没有区别:

    object为默认类,表示继承关系

    class Person:
      name = "zhengtong"
    
    class Animal(object):
      name = "chonghong"
    
    if __name__ == "__main__":
      x = Person()
      print( "Person", dir(x))
    
      y = Animal()
      print ("Animal", dir(y))

    Python3中运行结果:

    person [‘class’, ‘delattr’, ‘dict’, ‘dir’, ‘doc’, &lsq编程客栈uo;eq’, ‘format’, ‘ge’, ‘getattribute’, ‘gt’, ‘hash’, ‘init’, ‘init_subclass’, ‘le’, ‘lt’, ‘module’, ‘ne’, ‘new’, ‘reduce’, ‘reduce_ex’, ‘repr’, ‘setattr’, ‘sizeof’, ‘str’, ‘subclasshook’, ‘weakref’, ‘name’]

    animal [‘class’, ‘delattr’, ‘dict’, ‘dir’, ‘doc’, ‘eq’, ‘format’, ‘ge’, ‘getattribute’, ‘gt’, ‘hash’, ‘init’, ‘init_subclass’, ‘le’, ‘lt’, ‘module’, ‘ne’, ‘new’, ‘reduce’, &landroidsquo;reduce_ex’, ‘repr’, ‘setattr’, ‘sizeof’, ‘str’, ‘subclasshook’, ‘weakref’, ‘name’]

    class, class()和class(object)的区别

    为什么要继承object类

    Python2中,遇到 class A 和 class A(object) 是有概念上和功能上的区别的,分别称为经典类(旧式类,old-style)与新式类(new-style)的区别。python2中为什么在进行类定义时最好要加object,加 &开发者_JAVA教程 不加如下实例。

    历史进程:2.2以前的时候type和object还不统一. 在2.2统一到3之间, 要用class

    • Foo(object)来申明新式类, 因为它的type是 < type ‘type’ > 。
    • 不然的话, 生成的类的type就是 <type ‘classobj’ >。

    继承object类的原因:主要目的是便于统一操作。

    • 在python 3.X中已经默认继承object类。
    # -.- coding:utf-8 -.-
    # __author__ = 'zhengtong'
    
    
    class Person:
        """
        不带object
        """
        name = "zhengtong"
    
    
    class Animal(object):
        """
        带有object
        """
        name = "chonghong"
    
    if __name__ == "__main__":
        x = Person()
        print "Person", dir(x)
    
        y = Animal()
        print "Animal", dir(y)
    

    Person ['__doc__', '__module__', 'name']

    Animapythonl ['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', 

    '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', 

    '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'name']

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

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

    class, class()和class(object)的区别

    python2中写为如下两种形式都是不能继承object类的,也就是说是等价的。

    def class:
    def class():

    继承object类是为了让自己定义的类拥有更多的属性,以便使用。当然如果用不到,不继承object类也可以。

    python2中继承object类是为了和python3保持一致,python3中自动继承了object类。

    python2中需要写为如下形式才可以继承object类。

    def clpythonass(object):

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

    0

    上一篇:

    下一篇:

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    最新开发

    开发排行榜