首页 > 编程语言 >深入理解 Python 中的 object

深入理解 Python 中的 object

时间:2024-10-10 10:22:00浏览次数:3  
标签:obj Python object 对象 深入 基类 MyClass

深入理解 Python 中的 object

什么是 object()?

object() 是 Python 的一个内置函数,它用于创建一个最基础的对象实例。在 Python 中,所有类都默认继承自 object,即使你没有显式地继承它。因此,object 是所有 Python 对象的基类,它定义了一些基本的行为和属性,这些行为和属性会被所有对象继承。
当你创建一个类时,即使你不写出继承自 object,Python 也会自动将它作为基类:

class MyClass:
    pass

obj = MyClass()
print(isinstance(obj, object))  # 输出:True

object() 的作用和特点

object 是所有类的基类

在 Python 中,object 是所有类的基类,即所有类的根源。如果你定义了一个新类,而没有指定它继承自某个类,默认情况下它会继承自 object

class MyClass:
    pass

print(issubclass(MyClass, object))  # 输出:True

基础且不可变的对象

通过 object() 创建的对象是 Python 中最简单的对象,它没有任何属性或方法,除了一些基础的行为(如 strrepreq 等)。此外,object 的实例是不可变的,这意味着你不能向该对象添加属性。

obj = object()
obj.name = "example"  # 会报错:AttributeError: 'object' object has no attribute 'name'

object 提供基本的对象行为

作为所有对象的基类,object 提供了一些基础方法,例如:

  • str():返回对象的字符串表示(默认为对象的内存地址)。
  • repr():返回对象的正式字符串表示。
  • eq(other):判断两个对象是否相等。
  • ne(other):判断两个对象是否不相等。
  • hash():返回对象的哈希值,使对象可以用作字典的键。
class MyClass:
    def __str__(self):
        return "This is MyClass object."

obj = MyClass()
print(str(obj))  # 输出:This is MyClass object.

object() 作为占位符

在 Python 编程中,object() 还可以作为占位符使用。这种用法在函数参数、条件判断或其他需要唯一标识的场景中非常有用。由于每次调用 object() 都会生成一个新的、唯一的对象实例,这使它成为一个很好的占位符或标志符。

NOT_SET = object()

def my_func(value=NOT_SET):
    if value is NOT_SET:
        print("Value is not set.")
    else:
        print(f"Value is {value}")

my_func()  # 输出:Value is not set.
my_func(10)  # 输出:Value is 10

为什么要了解 object?

尽管我们在日常编程中很少直接使用 object(),但理解它在 Python 中的重要性仍然十分关键。object 是所有类的基类,它为所有对象提供了基础的行为,了解这一点有助于我们更好地理解 Python 的面向对象体系。

此外,object() 还可以用于一些特殊的场景,如占位符或唯一标识符,这样的设计在编写更加健壮和灵活的代码时会非常有帮助。

标签:obj,Python,object,对象,深入,基类,MyClass
From: https://blog.csdn.net/summerriver1/article/details/142702904

相关文章

  • Python 给函数加上状态的多种方式
    Python给函数加上状态的多种方式为什么要给函数加状态?方法一:使用函数属性方法二:使用闭包方法三:使用类方法四:使用装饰器为什么要给函数加状态?通常,函数是无状态的:每次调用它都会从相同的初始状态开始执行。而有时候,我们希望函数在多次调用之间能够保留某些信息,例如记......
  • 【AI大模型】深入Transformer架构:编码器部分的实现与解析(下)
      目录......
  • python从0快速上手(二)IDE选择
    在这个代码横飞的世界里,选择一个合适的PythonIDE就好比是选择一把顺手的武器。今天,就让我来带你一探究竟,看看市面上有哪些让人眼花缭乱的PythonIDE,并一较高下。1.PyCharmPyCharm,由大名鼎鼎的JetBrains出品,是Python开发者中的宠儿。它以其强大的代码分析和智能提示功能......
  • 4.文件规划:让你的Python更加简洁
    在上一篇文章之中,小编简单的介绍了目前Python中主流的三大Web框架,分别是Django、Flask和FastAPI,并且介绍了它们的优缺点。并且,我们快速的使用FastAPI搭建了一个简单的RestFul风格的接口,并且使用unicorn作为Web服务器,来向外提供服务。最后,我们使用我们学习到的FastAPI知识,......
  • 最通俗理解python中的self究竟是什么?
    python中,self是一个类的方法(构造函数)中第一个参数,表示实例自身。简单来说,它让类的方法能够访问属于该实例的属性和方法。我们可以把self想象成你在类内部给实例(实参)的“自我指代”,表示这个实例“我自己”的什么什么性质。类比和形象解释:假设你有一张学生表,每个学生有自己......
  • 力扣1436. 旅行终点站 python
    给你一份旅游线路图,该线路图中的旅行线路用数组 paths 表示,其中 paths[i]=[cityAi,cityBi] 表示该线路将会从 cityAi 直接前往 cityBi 。请你找出这次旅行的终点站,即没有任何可以通往其他城市的线路的城市。题目数据保证线路图会形成一条不存在循环的线路,因此恰有......
  • # 使用Python爬虫抓取豆瓣电影标题# 使用Python爬虫抓取豆瓣电影标题
    一、前言在这个小项目中,我们将学习如何使用Python的requests库和lxml库来爬取豆瓣电影首页上的电影标题,并将这些标题保存到一个文本文件中。这不仅能够帮助我们了解基本的网页抓取技术,还能让我们熟悉数据处理的基本流程。二、环境准备确保你的开发环境中已经安装了以下Py......
  • 基于yolov8、yolov5的PCB板缺陷检测系统(含UI界面、数据集、训练好的模型、Python代码)
    blog.csdnimg.cn/direct/6f53422ed9fd44dc8daad6dc5481c4c9.png)项目介绍项目中所用到的算法模型和数据集等信息如下:算法模型:  yolov8、yolov8+SE注意力机制或yolov5、yolov5+SE注意力机制,直接提供最少两个训练好的模型。模型十分重要,因为有些同学的电脑......
  • Python基于uniapp+Android平台的校园论坛交流系统 微信小程序z0c7d
    目录项目介绍具体实现截图开发者工具介绍技术路线解决的思路性能/安全/负载方面开发语言以及框架介绍数据库设计python-flask核心代码部分展示python-django核心代码部分展示详细视频演示源码获取项目介绍校园论坛系统设计的目的是为用户提供失物招领、二手闲置、跑......
  • Python,ModuleNotFoundError: No module named 'paho'
     Exceptioninthreaddjango-main-thread:    frompaho.mqttimportclientasmqtt_clientModuleNotFoundError:Nomodulenamed'paho'  解释:ModuleNotFoundError:Nomodulenamed'paho'表示Python解释器无法找到名为paho的模块。这通常意味着paho-mqtt客户端......