【发布时间】:2019-06-13 02:27:46
【问题描述】:
我一直在阅读有关使用 python 进行 OOP 的文章,特别是 this one。
那篇文章的作者有一个描述,然后是一个代码示例:
实例化类的 Python 语法与函数相同 打电话
>>> b = int()
>>> type(b)
<type 'int'>
据此,我推断“实例”存在于执行时而不是之前。当您执行 type(b) 时,这就是类 int() 的实例。
但后来我读到了这个stack overflow answer:
Instance是一个保存Object内存地址的变量。
这让我对这个词有点困惑。那么当我在执行时分配一个变量时,会创建“实例”吗?
最后这个explanation in ComputerHope指出了实例与变量赋值相同的事实:
function Animal(numlegs, mysound) {
this.legs = numlegs;
this.sound = mysound;
}
var lion = new Animal(4, "roar");
var cat = new Animal(4, "meow");
var dog = new Animal(4, "bark");
Animal 对象允许腿的数量和声音 Animal 使对象的每个实例都被设置。在这种情况下, 所有三个实例(狮子、猫和狗)都有相同数量的腿, 但发出不同的声音。
谁能提供一个关于实例何时退出的明确定义?
【问题讨论】:
-
我认为使用术语“变量”来定义“实例”是不正确的。您可以在不将对象绑定到名称的情况下实例化对象:
int()本身,没有赋值语句,是一个完全有效的 Python 程序。一个整数被实例化了,但是这里没有变量。 -
您提供的每个示例都是真实的!我会说术语“实例”是一个抽象概念 - 对其进行严格定义并没有多大用处。您可以通过说它具有这三个特征/行为来很好地定义它。
-
Python documentation 说“创建一个新类会创建一种新类型的对象,允许创建该类型的新实例。”如果这有帮助。另外,“类实例化使用函数表示法。假设类对象是一个返回类的新实例的无参数函数。”
-
你的问题的答案“所以当我在执行的那一刻分配一个变量时,“实例”被创建了吗?是是的'。这两件事都发生在那一刻。