什么是对象?Python 中的对象又与其他编程语言中的对象有何不同?
什么是对象?
一般来说,对象指的是拥有数据(或属性)和操作数据的方法的一个实体。
不同的编程语言对它的定义不一样,有的编程语言规定对象必须有属性和方法,有的编程语言则规定对象必须是subclassable 的(暂时没想到中文),Python 的定义则比较宽松,因为 Python 中不要求对象一定要有数据或方法,也不要求对象是 subclassable 的。
一切皆对象
在其他的静态语言中,有对象和类,对象是类的一个实例,但是在 Python 中,这两者都是对象。
“Python 中一切皆对象”这句话,它的意思暗示了在 Python 中,所有元素都是对象,string, list, 函数、类甚至是模块都是对象,属于 Python 的一等公民,这意味着它可以:
- 被赋值给一个变量
- 可以添加到集合对象中
- 可以作为参数传递给函数
- 可以当作函数的返回值
这就提供了一种动态性,你可以在运行的时候修改它。
对象的三个特征:身份(内存中的地址)、类型(1 是 int 类型)、值(a=1 中的1)。
以 list 为例
对象有数据和方法:
1 | # x 是一个对象 |
以函数为例
如果你定义了一个函数,你也可以将它赋值给一个新的变量,新的变量将拥有对这个函数的引用。
1 | def add(x, y): |