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

 更新时间:2023年02月03日 15:06:09   作者:Nicola-Zhang  
这篇文章主要介绍了python中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’, ‘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’, ‘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,加 & 不加如下实例。

历史进程: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']
Animal ['__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 class(object):

总结

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

相关文章

  • Python简单删除列表中相同元素的方法示例

    Python简单删除列表中相同元素的方法示例

    这篇文章主要介绍了Python简单删除列表中相同元素的方法,结合具体实例形式分析了Python使用list、set方法针对列表元素的去重与排序操作实现技巧,非常简单实用,需要的朋友可以参考下
    2017-06-06
  • 如何利用python实现把视频转换成gif图形

    如何利用python实现把视频转换成gif图形

    将视频转换为 GIF 图形的重要性不言而喻,在信息快速传播和多种社交平台广泛应用的背景下,GIF 动画不仅为个人用户提供了一种轻松的表达方式,本文给大家介绍了如何利用python实现把视频转换成gif图形,需要的朋友可以参考下
    2024-10-10
  • Python实现批量更换指定目录下文件扩展名的方法

    Python实现批量更换指定目录下文件扩展名的方法

    这篇文章主要介绍了Python实现批量更换指定目录下文件扩展名的方法,结合完整实例分析了Python批量修改文件扩展名的技巧,并对比分析了shell命令及scandir的兼容性代码,需要的朋友可以参考下
    2016-09-09
  • Python 对Excel求和、合并居中的操作

    Python 对Excel求和、合并居中的操作

    这篇文章主要介绍了Python 对Excel求和、合并居中的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • 使用Python编排Dockerfile的代码详解

    使用Python编排Dockerfile的代码详解

    docker compose 是 docker 的容器编排工具,它是基于 YAML 配置,YAML 是一种配置文件格式,支持传递环境变量,但是对于复杂的容器编排显得力不从心,于是我便开发这个程序,可以像写程序一样编排 docker,感兴趣的的朋友可以参考下
    2024-08-08
  • python爬虫框架feapder的使用简介

    python爬虫框架feapder的使用简介

    这篇文章主要介绍了python爬虫框架feapde的使用简介,帮助大家更好的理解和学习使用python爬虫,感兴趣的朋友可以了解下
    2021-04-04
  • Python数据分析之双色球基于线性回归算法预测下期中奖结果示例

    Python数据分析之双色球基于线性回归算法预测下期中奖结果示例

    这篇文章主要介绍了Python数据分析之双色球基于线性回归算法预测下期中奖结果,涉及Python基于线性回归算法的数值运算相关操作技巧,需要的朋友可以参考下
    2018-02-02
  • python多进程间通信代码实例

    python多进程间通信代码实例

    这篇文章主要介绍了python多进程间通信代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • Python中replace方法实例分析

    Python中replace方法实例分析

    这篇文章主要介绍了Python中replace方法,有一定的实用价值,需要的朋友可以参考下
    2014-08-08
  • 使用 Flask、Celery 和 Python 实现每月定时任务的步骤

    使用 Flask、Celery 和 Python 实现每月定时任务的步骤

    下面给大家分享使用 Flask、Celery 和 Python 实现每月定时任务的步骤,本文分步骤结合脚本给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-08-08

最新评论