yccjm2001 发表于 2023-3-23 16:43:44

求教大佬,只有类的赋值才能叫实例化对象?

求教各位大佬,
def aa():
    pass

a=aa()

class A:
    pass

a=A()

函数的赋值能叫实例化对象吗?
还是只有类的赋值才能叫实例化对象?

isdkz 发表于 2023-3-23 16:46:46

函数的赋值不能叫实例化对象。在 Python 中,实例化对象通常是指创建类的实例。在你给出的例子中,a=A() 是一个实例化对象的过程,因为你创建了类 A 的一个实例,并将其赋值给变量 a。

而 a=aa() 这个语句是将函数 aa 的返回值(这里是 None,因为函数没有返回任何内容)赋值给变量 a。这里并没有创建任何类的实例,所以不能称之为实例化对象。

沙漠之烟 发表于 2023-3-23 18:23:59

不叫。

阿奇_o 发表于 2023-3-23 21:22:30

本帖最后由 阿奇_o 于 2023-3-23 21:31 编辑

实例化,是 实例化过程。它包括 __new__() 和 __init__()   这两个过程。new是在内存上开辟空间,创建一个唯一的“对象”,init是初始化该对象的各个属性值。
“实例化对象”,作为名词时,是指被创建出来的 那个对象本身。 作为动词,过程,就是执行 MyClass() 这个构建函数/方法,其背后是执行__new__() 和 __init__() 这两个方法。

赋值,是 赋值操作。 是把=等号 右边的值(字面值)或 对象(对象地址) 绑定到 左边的 字符名(变量名/变量)上。

特别的,因Python里函数/类也是一种对象,叫“函数对象”/“类对象”,故 函数/类 也可以被赋值给任意合法名字上,如def func(): ...   f = func

但要区分,赋值时, 右边是 函数/类调用后的返回,还是函数/类本身 ?
—— 更多的、通常是函数调用后 或 构造函数/方法调用(即 执行类的实例化)后的返回,如 你这里的 a = aa() 或 a = A()

Get it?
页: [1]
查看完整版本: 求教大佬,只有类的赋值才能叫实例化对象?