Python中的一切皆对象!

在 Python 中,一切都是对象。

这意味着所有数据类型,包括数字、字符串、列表、元组、字典,甚至函数和类,都是对象。

每个对象都有一个身份(内存地址)、一个类型(Class)和一个值(实际数据)。

1
2
3
4
5
6
7
8
9
10
11
12
13
# 数字是对象
a = 10
print(f"a 的类型是 {type(a)}") # <class 'int'>

# 字符串是对象
b = "Hello"
print(f"b 的类型是 {type(b)}") # <class 'str'>

# 函数是对象
def func():
return "I am a function"

print(f"func 的类型是 {type(func)}") # <class 'function'>

Type、Object 和 Class的关系

Object 是所有类的基类,而 Type 是所有类的元类。

这意味着每一个类都是 Type 的实例,而每一个对象都是某个类的实例。

1
2
3
4
5
6
7
8
9
10
11
# type 函数返回对象的类型
print(f"10 的类型是 {type(10)}") # <class 'int'>

# type 本身是一个类
print(f"int 的类型是 {type(int)}") # <class 'type'>

# 自定义类也是 type 的实例
class MyClass:
pass

print(f"MyClass 的类型是 {type(MyClass)}") # <class 'type'>

对象的三个特征:身份、类型、值

每个对象都有三个主要特征:身份、类型和值。

身份:可以理解为对象在内存中的地址,通过 id() 函数获取。

类型:指对象属于哪种数据类型,通过 type() 函数获取。

:即对象实际包含的数据,可以直接通过对象本身访问。

1
2
3
4
x = 42
print(f"x 的身份是 {id(x)}") # 对象的身份
print(f"x 的类型是 {type(x)}") # 对象的类型
print(f"x 的值是 {x}") # 对象的值

None(全局只有一个)

None 是一个特殊的常量,用来表示空值或无值状态。

在 Python 中,None 是一个单例,这意味着全局范围内只有一个 None 对象。

这在很多情况下(如默认参数、返回值)都非常有用。

1
2
3
a = None
b = None
print(f"a 和 b 是同一个对象吗? {a is b}") # True,说明全局只有一个 None 对象