📜  __sizeof__() 和 getsizeof() 方法之间的区别 - Python(1)

📅  最后修改于: 2023-12-03 14:38:59.617000             🧑  作者: Mango

__sizeof__()getsizeof() 方法之间的区别 - Python

在Python中,我们可以使用__sizeof__()getsizeof()方法来获得对象的大小,但是这两种方法有什么区别呢?

__sizeof__()

__sizeof__()方法是Python中的一个特殊方法,用于返回对象的大小,返回值为整数类型,单位为字节。这里需要注意的是,这个方法返回的大小并不包含对象引用的大小。

下面是一个示例:

class MyClass:
    pass

my_object = MyClass()

# 调用__sizeof__()方法
print(my_object.__sizeof__())  # 输出:56

从上面的示例可以看出,对象my_object的大小为56字节。

getsizeof()

getsizeof()方法是Python的标准库中提供的一个函数,用于返回对象的大小,它会递归地计算对象引用的大小。返回值同样为整数类型,单位为字节。

下面是一个示例:

import sys

class MyClass:
    pass

my_object = MyClass()

# 调用getsizeof()方法
print(sys.getsizeof(my_object))  # 输出:64

从上面的示例可以看出,getsizeof()方法计算对象my_object的大小为64字节,比__sizeof__()方法返回的大小要大。

区别

__sizeof__()方法返回的大小不包括对象引用的大小,而getsizeof()方法会递归计算对象引用的大小。这是两种方法之间的主要区别。

因此,当我们需要计算对象实际大小时,应该使用getsizeof()方法。