V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
loliordie
V2EX  ›  Python

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

  •  
  •   loliordie · 2020-01-28 02:12:02 +08:00 · 7694 次点击
    这是一个创建于 1747 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

    就 人 这个 object 的#生物学#定义 可能就是 真核总界 动物界 后生动物亚界 后口动物总门 脊索动物门 脊椎动物亚门 羊膜总纲 哺乳纲 真兽亚纲 灵长目 类人猿亚目 狭鼻猴次目 类人猿超科 人科 人亚科 人族 人属 智人种

    然后对于这个 object 的一个实例对象,就是你我他
    IvanLi127
        23
    IvanLi127  
       2020-01-29 01:28:30 +08:00 via Android
    对象就是类的实例化,instance 就是 object。单例模式下你的这个实例不就是一个大家一起用的对象嘛?
    LDa
        24
    LDa  
       2020-01-29 02:57:06 +08:00
    object 还是属于定义和概念阶段吧?实例化之后他成了一个具体的事物,称为 instance ?我的个人理解
    wanguorui123
        25
    wanguorui123  
       2020-01-29 12:29:22 +08:00
    object 是定义,instance 是通过定义创造的一个具体事物
    wanguorui123
        26
    wanguorui123  
       2020-01-29 12:29:59 +08:00
    object -> 人,instance -> 小明
    yjxjn
        27
    yjxjn  
       2020-01-29 16:37:12 +08:00
    对象是一种抽象的概念,而实例代表把这种抽象具体化,也就是说最简单的,人都有头,耳朵,身体会说话这几种特征等等,但是实例化,就代表是小明,小红,小白等等。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   945 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 20:40 · PVG 04:40 · LAX 12:40 · JFK 15:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.