鱼C论坛

 找回密码
 立即注册
查看: 3329|回复: 5

[技术交流] Python中类对象和实例对象的区别

[复制链接]
发表于 2016-11-3 10:59:12 | 显示全部楼层 |阅读模式

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

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

x
虽然oo术语一直有点乱,
但在传统概念中"类对象"是指"类的实例", 简称"类对象"或"类实例", 在C/C++/Java/C#...中都是这样.
可python提出了"类对象"和"实例对象", 我刚接触python官方教程时以为是一个东西, 但实际上是两个完全不同的玩意.
python官方对于"类"的说法是:
"a template for creating user-defined objects. Class definitions normally contain method definitions which operate on instances of the class"
这与C++中的概念是一致.
但"类对象"是啥呢? 我只找到只言片语:
"When a class definition is left normally (via the end), a class object is created"
"A class object can be called (see above) to yield a class instance (see below)."
"A class instance is created by calling a class object (see above)."
类对象是通过类定义产生的, 并且实例对象是通过调用类对象产生的.
既然是调用类对象产生的, 那类是干啥吃的?
想来想去给了自己一个目前认为最合理的解释:
python作为一门动态语言必须有能力在运行时改变类的结构,
所以就提出了python中的"类对象"概念, 通过它控制类结构.
因此python中的"类"或者说是"类定义"只是个初稿, 通过初稿产生的类对象才是真正的终稿.
或者也可以理解成python把"类"本身也抽象成了一种"类"(自我抽象), 这种类产生的对象叫类对象, 类对象才能产生实例对象.
而传统编译语言里比如C++并没有动态改变数据结构的需求, 类就是类定义本身.
因此产生python中的"类对象"是没有意义的. 也就不存在对等的概念了.
但是双方都能产生实例
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-11-7 16:01:54 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-11-7 16:02:28 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-11-7 16:34:31 | 显示全部楼层
哇,学写了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-26 12:40:55 | 显示全部楼层
还是没有懂,感觉好难理解,还是感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-1 09:51:31 | 显示全部楼层
我找到了一条解释蛮好的链接,发出来分享一下:

https://www.jianshu.com/p/9fb316cbf42e
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-24 00:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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