Python 的设计哲学之一是”一切皆对象”,这意味着在Python中,几乎所有的东西都是对象。在Python中,对象是编程的基本单位,可以是数字、字符串、列表、字典、函数、类等。每个对象都有其自身的属性和方法。属性是对象的特征或数据,而方法是对象可以执行的操作或函数。这种”一切皆对象”的思想使得Python非常灵活,简洁而强大。它允许你以一种统一的方式处理不同类型的数据,并将数据和操作封装在一起,使得代码更加模块化和可重用。
在编程中,对象(object)是具体的实体,它代表了某个事物或概念。
对象拥有属性和方法。属性是对象的特征或数据,而方法是对象可以执行的操作或行为。例如,当我们谈论一辆汽车时,它可以是一个对象。汽车对象可以有属性,如颜色、品牌、型号等,还可以执行方法,如启动、加速、刹车等。
面向对象编程(Object-Oriented Programming, OOP)的核心思想是将现实世界的问题抽象成对象,将复杂的问题分解为更小、更易管理的对象,并通过对象之间的交互(interaction)来解决问题。这意味着,所要被解决问题的领域被建模为一组“相互作用”的对象,对象通过调用方法(发送消息)来进行交互和协作,以实现特定的功能和解决问题。
(1) 调用访问对象的方法(method),如:
object1.method(arg1, arg2, ...)
(2) 访问对象的属性(attribute),如:
object1.attribute
对象与对象值
计算机语言引入了“对象”这概念后,也引入了一些我们很熟悉的哲学问题。例如,“白马非马”和“人不 能两次踏入同一条河流”等。它们都在探讨对象的同一性(identity)问题。
”白马非马”,“白马”一种特定的马,具有“白色”的属性,而“马”是泛指所有的马,不关注颜色属性,“白马”和“马”在概念上是不同的。这与面向对象编程中的对象同一性类似,即便两个对象的属性值相同,但只要它们在内存中的地址不同,那么它们就是不同的对象。
”人不能两次踏入同一条河流”则是说河流虽然是同一河流,但每一刻河水都在流动,其状态在不断改变。 这与面向对象中的对象状态的变化很类似,即使是同一对象,其状态也可能因为时间或者其他因素的变化而改变。
对象的同一性:这是指两个对象引用是否指向了内存中的同一个实例。
对象值相等:这是指两个对象的内容或者状态是否相同。
当我们创建一个对象时,系统会为其分配一段内存空间,并为该对象分配一个唯一的标识符。在Python中,可以使用 id() 函数来获取一个对象的唯一标识符。如果两个对象具有相同的标识符,那么它们是同一个对象;反之,如果标识符不同,则表示它们是不同的对象。
在下面的例子中,列表a和b的值相同,但不是同一个对象,而列表a和c是同一个对象,很明显a和c的值也必然相同。


