对象,属性,变量和类实例之间的区别

时间:2018-10-03 11:48:00

标签: class object variables attributes instance

我很难理解教授的讲义,因为我的大脑似乎将对象,属性,变量和类实例视为可互换的。在区分这四个术语方面,我深表感谢。谢谢!

2 个答案:

答案 0 :(得分:1)

这对您访问https://www.quora.com/What-is-the-difference-between-instance-variable-and-class-variable

有帮助

使用关键字static声明类变量,而使用static关键字声明实例变量。

类变量是类的所有实例共有的。这些变量在类的对象之间共享。实例变量不在类的对象之间共享。每个实例都会有自己的实例变量副本。

由于类变量是类的所有对象共有的,因此通过一个对象对这些变量所做的更改将反映在另一个对象中。由于每个对象都有自己的实例变量副本,因此通过一个对象对这些变量所做的更改不会反映在另一个对象中。

可以使用类名称或对象引用来访问类变量。实例变量只能通过对象引用来访问。

https://qph.fs.quoracdn.net/main-qimg-c4b92e80a8500c11fe705c1bafc3ed26

答案 1 :(得分:0)

您没有提到有问题的编程语言。

通常,类是声明以下内容的模型或模板 某类对象的外观如何。

您给一个类命名,并提及它是否继承 是否来自其他班级。

您还定义了班级成员。 这些可以是保存数据的变量(对象状态) 和定义的方法(类定义的函数) 对象的行为。

使用声明的模型实例化一个类时 ,您将获得一个对象,即一个具体的类实例。 这是一个具体的实体,将其视为内存中的新变量, 其数据类型是类(而不是例如 整数或字符串数​​据类型),其值为其状态 在规定的时间(状态为 其所有数据成员变量值的组合 在那一刻)。该对象必须具有身份, 因为它存在于内存中,并且是一个不同的实体  从其他对象,您可以从中实例化或 任何其他班级。数据成员变量具有特定的 每个实例的值。这些不共享 实例。

现在,成员方法可以在实例之间共享 因为它们没有状态,所以每个对象都相等。 他们被称为带有一些论点 然后他们做一些改变对象状态的动作,或者 至少与具体对象紧密相关。 但是它们对于每个对象都是通用的。通常的方法 知道他们通过特殊的方式作用于什么具体对象 诸如“ this”或“ self”之类的名称,引用了“ itself”。

对象通常在创建时分配给变量, 存储对其身份的引用,以允许 剩下的代码来操作它们。

您使用这些变量来引用具体对象 在类的代码之外,并使用“ this”或“ self” 从班级内部引用它。

您经常访问符合以下条件的对象成员: 对象名称。就像在“ player.run()”或“ player.total_score”中一样。 也就是说,如果玩家是您为其分配了一个变量的变量 类Player实例。看起来像玩家=新玩家 或玩家= Player()。

属性只是赋予数据成员的另一个名称。 有时属性和方法可以是公共的或私有的,  意味着类外的代码可以使用它们,或者仅 班级代码可以访问。

有时您会看到数据成员或属性称为 属性。访问属性时,您正在访问 财产。在某些语言(例如Python)中,属性可能意味着 有点不同,但仍然密切相关...

现在还可以根据语言描述事物 (C ++,Java),也可以将所有内容都视为对象,  包括类定义(Python)。

我希望这会有所帮助,您还应该搜索互联网或有关 继承,覆盖,类图和其他类 相关。

这仅仅是定义自己的数据类型的能力 语言内置类型之外。

您可以将变量视为具有值的框(某个地址中的内存容器)的名称。但是有时候你想操纵 不是值,而是地址本身。这次你说你有 参考(地址)。有时变量只是这些变量的名称 参考。引用也称为指针。但是您可以使用通常不使用引用的指针进行数学运算(递增,递减,向其添加固定值...)。