Объекты int в Python содержат только значения? - PullRequest
2 голосов
/ 04 мая 2020

Давайте возьмем следующий Python код:

a = 3
print(a)

Насколько я знаю, a является ссылкой на объект класса int - поправь меня если я не прав. Схематически это должно выглядеть примерно так: Насколько я знаю .

    The object of 'int' class
       containing value 3

        |---|
a ----> | 3 |
        |---|

Содержит ли объект int в памяти только значение 3 или содержит место для других переменные тоже?

Наш профессор сказал нам, что это выглядит примерно так:

   The object of class 'int'
        |--------|
        |   ___  |
a ----> |   |3|  |
        |   ---  |
        |--------|

Итак, используется ли оставшееся пространство некоторыми другими переменными?

Ответы [ 2 ]

2 голосов
/ 04 мая 2020

Любой объект в Python наследуется от класса object, что означает, что он рассматривается как любой объект Python, а не как примитивное значение, как вы ожидаете от такого языка, как C. Это то, что люди имеют в виду, когда говорят, что в Python, все является объектом .

Например, у класса int есть метод __str__ который определяет, как выглядит его строковое представление:

>>> a = 3
>>> a.__str__()
'3'

Вы можете использовать dir(a), чтобы получить список всех методов, связанных с a.

Итак, чтобы ответить на ваш вопрос, да - объект int выделяет не только пространство, необходимое для самого примитивного значения, но и для всего объекта Python, связанного с ним.

0 голосов
/ 04 мая 2020

Я не уверен, что вы спрашиваете, но вы можете использовать type(), чтобы проверить, к какому классу относится объект или переменная:

type(a)

ВЫХОД:

<class 'int'>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...