【发布时间】:2021-01-05 10:10:15
【问题描述】:
想了解一下python(3.8.2)中的数据模型,也许有人可以简单的解释一下,为什么每个基本数据类型都是一个类对象,并且有这么多的属性和功能。
考虑以下代码:
num = 1337
type(num) # <class 'int'>
dir(num)
>>>
['__abs__',
'__add__',
'__and__',
...
'real',
'to_bytes']
所以我可以这样做:
num.__add__(1)
>>> 1338
所以我的问题是:为什么这些函数是用户定义变量的一部分,而且这不是有一些开销吗?
【问题讨论】:
-
所以你可以为任何你想要的类定义
+和其他操作。 (是的,可能还有其他方法可以做到这一点,但这就是 Python 的做法。)另外,Python 中的int并不像 C 中的int那样完全是“基本”数据类型,因为它可以保持任意大值。 -
您究竟在哪里看到了内存开销?我不知道任何语言都会消耗大量内存的方法。该方法附加到类,它是一个指向函数的指针,因此成本不会太高。在这些方法的实现中可能会占用大量内存,但您无法从您所展示的内容中看出这种情况。据我所知,每个单独的对象都没有额外的内存成本。
标签: python python-3.x class types magic-methods