【问题标题】:In OOP, what is the difference between an Object and an Instance? [duplicate]在 OOP 中,Object 和 Instance 有什么区别? [复制]
【发布时间】:2017-11-10 04:27:46
【问题描述】:

我看到以前有人问过这个问题,但是当我说试图理解这个概念并且因此无法继续前进时,请相信我。我非常感谢任何人的帮助,所以如果我对某些事情不清楚,请告诉我。

我一直在尽我最大的努力继续前进并开始使用 Python 进行编码,因为我有信心在使用流控制和尝试操作数据类型时了解该语言的结构,但是,我似乎仍然没有掌握 OOP。

我一直在做很多研究,试图了解对象和实例之间的区别是什么,以及这两个术语是如何在程序中调用的。据我所知,它们是完全相同的东西,但是,当人们开始使用非常高级的术语来描述这个概念时,我真的很困惑。我知道实例化一个Object是一个类的Instance,但我不明白的是彼此的优先级。

例如:

class MyClass:
    #Attributes?
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def happy_birthday(self): 
        return 'You are {}, happy birthday {}.format(self.age, self.name)'
#someone said that the object is the instance, however, I do not understand that part.

#Instantiating an object?
boy1 = MyClass()

#Is this also an object or an instance if I call the function?
boy1.happy_birthday()

我也一直在寻找在代码中标记哪些部分是哪些部分的示例。

【问题讨论】:

  • 当你输入这个问题时,重复肯定已经显示为建议,不是吗?
  • 嗯,有“Python 中的一切都是对象”这句话,所以boy1 是一个恰好是MyClass 实例的对象。
  • 您的最后一行可能是最令人困惑的部分。假设您的班级是Table,我们创建table1= Table('mine'),其中'mine' 是一个字符串,可以传递给新的Table 对象以指示拥有。所以,现在我们有了一张独特的桌子——我房间里的那张。 table2 =Table('yours')。如果我把咖啡洒在我的桌子上 (table1.spill_coffee()),它也会洒在你的桌子上吗?它们都是表,也是对象,但只有 my 表(我家中的表实例 - table1)受到影响。而且我的桌子在泄漏后仍然是同一个物理对象,它不是被泄漏重新制作的。
  • 我认为这两个重复项都与类似 JS 的解释混淆了。 Javascript没有适当的类,只有“对象原型”。在 Python 中,每个对象都是类的一个实例。 This 是 IMO 链接答案中最好的。
  • 虽然我感谢那些帮助我了解这个概念的人的帮助,但我也想表达一些社区成员的粗鲁。我想知道为什么会有一个辱骂和粗鲁的标志选项。再次感谢所有帮助过我的人。

标签: python class oop object methods


【解决方案1】:

通常在谈论类的实例时使用术语对象。 例如,有人可能会告诉您“确保在代码中处理 Car 类对象的异常”。当他们希望您检查变量是否是使用 Car 类构造函数创建的东西时。

在谈论对象的特定示例时使用术语实例。例如,您可以将变量名称为“toyota”的 Car 对象称为 Car 类实例,该实例可能具有一组唯一的字段值。

但我也觉得总的来说人们对区分对象和实例这个术语并不那么挑剔,所以我觉得没有必要对此过分强调。

【讨论】:

  • 同行压力建议您删除您的答案。这也将为您删除负面回购。
猜你喜欢
  • 2019-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-10
  • 1970-01-01
  • 2013-10-19
相关资源
最近更新 更多