鱼C论坛

 找回密码
 立即注册
查看: 2209|回复: 3

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

[复制链接]
发表于 2023-3-23 16:43:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

a=aa()

class A:
    pass

a=A()

函数的赋值能叫实例化对象吗?
还是只有类的赋值才能叫实例化对象?
最佳答案
2023-3-23 16:46:46
函数的赋值不能叫实例化对象。在 Python 中,实例化对象通常是指创建类的实例。在你给出的例子中,a=A() 是一个实例化对象的过程,因为你创建了类 A 的一个实例,并将其赋值给变量 a。

而 a=aa() 这个语句是将函数 aa 的返回值(这里是 None,因为函数没有返回任何内容)赋值给变量 a。这里并没有创建任何类的实例,所以不能称之为实例化对象。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-3-23 16:46:46 | 显示全部楼层    本楼为最佳答案   
函数的赋值不能叫实例化对象。在 Python 中,实例化对象通常是指创建类的实例。在你给出的例子中,a=A() 是一个实例化对象的过程,因为你创建了类 A 的一个实例,并将其赋值给变量 a。

而 a=aa() 这个语句是将函数 aa 的返回值(这里是 None,因为函数没有返回任何内容)赋值给变量 a。这里并没有创建任何类的实例,所以不能称之为实例化对象。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2023-3-23 18:23:59 | 显示全部楼层
不叫。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-24 05:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表