对象的类是Python中该对象的值的一部分吗?

Jon*_*rit -1 python variables attributes class

我的朋友说copy.copy()函数的作用是将变量的值和类复制到另一个变量.我说这堂课是价值的一部分,但他不相信.代码:

harry = Animal('hippogriff')
Run Code Online (Sandbox Code Playgroud)

他说'hippogriff'是物体的价值,而不是动物('hippogriff').这是真的?

Mar*_*ers 5

copy.copy()将创建对象的浅表副本; 它将创建一个新的类型实例并复制所有属性.

在这种情况下,将Animal()创建一个新实例,并且无论什么属性保存对该字符串的引用都将hippogriff复制到新副本.如果有任何可变属性harry(字典,列表,其他自定义类实例),则新副本将共享对这些属性的引用,harry并且在两个实例上都可以看到任何更改.

Animal()实例是实际的"价值"在这里; 但它是一个复合对象,它的属性本身就是值.

对于Python'原始'类型,例如intor str,它们是不可变的,对象本身就是你朋友所指的'价值'; str保存字符串值的对象没有属性.毕竟,它不是复合值.但是你不应该在这里过多关注"价值"这个概念.

称之为对象.在Python中,一切都是对象,对象具有类型,许多可以具有引用其他对象的属性.甚至方法也是这方面的对象; 该'hippogriff'字符串具有.upper.lower属性,既引用,你可以调用的方法,这些方法都是对象了.在Python中,它一直是乌龟!

  • 因此,简而言之,虽然通常不将类信息*称为"值",但它仍然被保留. (3认同)