2017-07-25 44 views
4

我正在阅读python的语言参考,并在第3章“数据模型”中说每个对象都有一个标识,类型和值。我明白的身份。我猜的类型意味着__class__引用的对象(如果错误,请纠正)。我猜这个值意味着对象的属性,换句话说就是对象名字空间中的名字所引用的对象。它是否正确 ?价值意味着什么关于python对象?

+0

是的,这是正确的 – Wli

回答

3

是的,这是正确的。大多数情况下,只要将价值看作是对象本身。

您也可以使用“状态”一词来描述对象值;对于可变对象,值可以是更改,但通常而言,它的类型和标识不会更改。

一些例子:

  • 2048int具有整数值2048 int是一个不可变型,因此该值永远不会改变。您通常使用不同的值创建同一类型的对象新的; 2048 + 1会生成一个新的标识为的值为2049的对象。
  • [42]是一个带有对另一个对象的单一引用的列表。您可以更改内容,更改列表值。但身份和类型不会改变。
  • 对于Python类的实例,__class__是可写的,可让您动态更改类型。这很少需要,但存在选项。
+0

但是如果我写a = C(),其中C是某个类,然后是.__ class__ = B,其中B是另一个类。那我有没有改变过?这与你的陈述有关,即类型和身份不会改变。 –

+0

@АлександърГьорев:yup,但仅适用于Python类;你不能对'int'或'str'或'list'做同样的事情。 –