今天突然被人问到 object 和 instance 有什么不同

2020-01-28 02:12:02 +08:00
 loliordie

被带的实习生问到的, 猛的一问还真想不出什么根本性的不同来.

我当时的回答是, object 是一种客观上的概念, 例如哺乳类(class)包含了人类这个对象(object), 那么我们根据人类这个概念描述具体一个人类例如王小明这个实例(instance)属于人类, 75kg 180cm. 但是也可以说, 王小明是人类(object).实例跟对象只是语境上的不同, 用于强调存在 materialize 这一过程, 二者在绝大多数语境下相同.

但其实我完全不知道对不对...

7735 次点击
所在节点    Python
27 条回复
CismonX
2020-01-28 02:34:43 +08:00
很好理解。不论是 object 还是 class,描述的都是一个事物,而 instance 描述的是两种事物之间存在的一种关系,即 instance is an example/occurrence of something.

因此,就有:
An object is an instance of a class
A class can be an instance of a class template
A running java program is an instance of JVM
等等
deletelazy
2020-01-28 02:39:11 +08:00
差不多吧,我理解是 object 是定义,object 运行之后就是 instance。可以理解为一个东西的不同阶段?
还有以下例子:
object 运行之后就是 instance
代码运行之后就是程序
镜像运行之后就是容器
andrewpsy
2020-01-28 02:48:51 +08:00
Class 定义如何建立一个 object,这个 object 具体应该有什么 state 和 behavior,并且描述了 state 的具体情况和 behavior 的工作方式。
Object 就是一个被 Class 定义好的模版。
Instance 是一个具体化了的 object 实例。
widewing
2020-01-28 05:31:11 +08:00
等等。。我们聊的是 python 吗?
whileFalse
2020-01-28 10:41:42 +08:00
instance 是 class 通过 new 创建的。说到 instance,就隐含着这个 instance 的 class。可以把 instance 类比为儿女。说到儿女,就隐含着父母的存在,虽然没有直接提及。
所有东西都是 object。class 是 object,instance 也是 object。可以把 object 类比为人类。
vjnjc
2020-01-28 10:59:52 +08:00
instance 是 runtime 的 object ?
ArianX
2020-01-28 11:16:10 +08:00
instance 是相较于 class 而言的,而不管 class 还是 instance,都是 object。
charlie21
2020-01-28 11:33:54 +08:00
能问出这种问题来的实习生,如果不是故意的,是实习生在故意试探你吧 。废什么话阿跟他,Google 一下不就完事了吗?你应该回答的是公司机密型的问题 而不是大学老师回答的没六的问题。 最好提问收费 问一个问题 100 块,他自己就 Google 去了
rogwan
2020-01-28 11:40:12 +08:00
万物皆 obj,不说万物皆 instance。
ipwx
2020-01-28 11:48:07 +08:00
就好像 gmt 和 utc+0 有啥区别 这个问题。你要说是完全一样的,不尽然。但是大部分情况下都指代相同的概念。所以是个没太大意义的问题。
zjsxwc
2020-01-28 11:58:06 +08:00
因为还有不 runtime 的 object,比如 kotlin 里的 object 语法糖
JmmBite
2020-01-28 12:27:57 +08:00
人类是人类,你仅仅就是你。
msg7086
2020-01-28 13:33:26 +08:00
「对象」是一个有行为的东西。
「实例」是一个模板的具象。
如楼上几位所述。实例是类的实例,而类和实例都可以是对象。
在完全面向对象的语言里,所有的东西都是对象。
palmers
2020-01-28 13:37:56 +08:00
good1uck
2020-01-28 13:55:05 +08:00
object 是种数据结构,由某些类型的抽象或具体的 function 字段和 data 字段构成
instance 是数据,有着确定的 function 定义和确定 data 值
good1uck
2020-01-28 13:56:28 +08:00
当然了结构本身也是种数据,这种数据的用途就在于实例化
aleung
2020-01-28 16:49:24 +08:00
@charlie21 有求知欲是好事。我觉得这是一个好问题。
ClericPy
2020-01-28 18:49:41 +08:00
点进来以前以为会讨论 A class is an instance of a metaclass.......
blless
2020-01-28 19:07:47 +08:00
instance 是特指,object 是泛指啊。instance 是独一无二的!
wangyzj
2020-01-28 21:33:26 +08:00
王小明属于哺乳类(class)
是长的像人的一个实例(instance)
所以管继承类叫 object ?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/640578

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX