python中一切皆对象是什么意思

RTa*_*Tan 3 python

我已经开始学习Python,阅读了一些教程,我看到了这句话Everything is an object in Python,它到底是什么意思?

naj*_*der 9

这意味着您使用的几乎所有东西:

  1. 是一个类的实例
  2. 有属性

我说“几乎”是因为这不适用于关键字(例如forifdef)。

一切都是类的实例

当你定义一个变量时,Python 会创建一个指向内存中对象的指针。该对象是一个类的实例。您可以使用该函数type()查看变量所属的类。

>>> x = 100
>>> type(x)
int
Run Code Online (Sandbox Code Playgroud)

int是类本身 - 不是代表它的字符串。事实上,您可以使用此类来创建其他整数。您可以将类视为“工厂”,用于创建它们所描述的类型的新对象。

>>> # the class int is taking a string as a parameter and creating an integer
>>> int('123')
123
Run Code Online (Sandbox Code Playgroud)

更进一步,既然我们说“万物皆对象”,那么类也必然是对象。但是,如果每个对象都是类的实例,那么这些类也必须是某些类的实例。

事实证明,Python 中有一个元类type,其中所有类都是实例。您可以将其视为一种创建工厂(我们的类)的“通用”工厂。

>>> type(int)
type
Run Code Online (Sandbox Code Playgroud)

万物皆有属性

要查看对象的属性,可以使用以下dir函数:

dir(x)
Run Code Online (Sandbox Code Playgroud)

属性可以是方法,也可以只是存储一些数据。例如:

>>> import os
>>> 
>>> os.sep  # returns the string (some data) that shows the default path separator of your operating system
'/'
Run Code Online (Sandbox Code Playgroud)

最后,请记住您可以更改属性

os.sep = '\\' # change to Window path separator
Run Code Online (Sandbox Code Playgroud)

或创建新的:

os.pc_owner = 'hb'
Run Code Online (Sandbox Code Playgroud)