免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: wan8832
打印 上一主题 下一主题

超级郁闷的一件事,理解python的类! [复制链接]

论坛徽章:
0
11 [报告]
发表于 2006-05-19 19:03 |只看该作者
原帖由 flw 于 2006-5-19 11:46 发表

严重错误!
在 C++ 中是这样,
但是在 Python 中恰恰相反。

Python 中,类对象只是对象的一种,
类对象支持两种操作:属性引用和实例化,类被实例化之后,产生类实例对象,这又是一种不同于类对象的新型对 ...



谢谢,长见识了,怪不得学python时感觉类怪怪的,就好象c++中对象一样

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
12 [报告]
发表于 2006-05-19 19:33 |只看该作者
原帖由 nemanman 于 2006-5-19 19:03 发表



谢谢,长见识了,怪不得学python时感觉类怪怪的,就好象c++中对象一样

其实 C++ 中的对象相当于 Python 中的类实例对象,
而 Python 中的类也是对象,这一点和 C++ 有最大的区别,
C++ 的类是“类型”,没有实体(虽然静态成员变量有实体)。
C++ 中的类只能用来访问属性和实例化,
Python 中的类除了能访问属性和实例化之外,还可以像普通的一个实体一样传来传去,比如赋值给另一个变量,再或者传递到函数里面去,等等。
通过重载运算符,甚至还能参与运算,从这个角度来讲,一个类和一个整型变量没有太大的区别。

C++ 就不同了,类是类型,变量/对象是实体,一个是抽象的,一个是具体的。

论坛徽章:
0
13 [报告]
发表于 2006-05-19 21:30 |只看该作者
对初学者不要讲的太复杂了,其实不仅仅python,包括java,C++,C#几乎所有的面向对像语言都可以这样形容。类是一个图纸,而对象是按照这个图纸生产出来的产品。

论坛徽章:
0
14 [报告]
发表于 2006-05-19 21:45 |只看该作者
长见识了,原来python还有这样的特性

论坛徽章:
0
15 [报告]
发表于 2006-05-19 23:10 |只看该作者
实践才是真理,开始学的时候不懂也没有关系,不必让它阻挡你继续的脚步。学到一定程度,看的代码多了,写的代码多了,很多东西自然就明白了。

论坛徽章:
0
16 [报告]
发表于 2006-05-20 02:41 |只看该作者

对象的语义与语境有关

不同的语言里,对象的语义是不同的,而且面向对对象这个东西在物理实现上,编程语法上,和思维方式三个层面都有不同的意思。这是我个人第一点看法。不准确,可借鉴。学美术的学编程真的是很厉害啊,佩服,呵呵!

论坛徽章:
0
17 [报告]
发表于 2006-05-20 02:55 |只看该作者
打个比方说吧, 男人, 女人, 老人, 小孩都是人, "人"就是一个抽象, 是一类物体的统称。计算机语言里的类, 就好比"人"这个抽象的概念, 而对象就好比某个具体的人。

换句话说, 类和对象是一种思维模型, 用这种模型写程序, 比较能反映真实世界的情形。但这只是思维模型的一种, 不是全部。

所以, 开始不懂类和对象, 完全没有关系。从简单的代码写起, 学会用函数, 写多了, 认识深刻了, 自然而然就会理解比较深的概念了。

另外, 就像上面帖子说的, 每种语言对类和对象的定义都有差别。单从思维模型这个角度来讲, 是基本一致的。

说到这里, 忽然想起了古代的一句话, 叫"白马非马", 呵呵.

论坛徽章:
0
18 [报告]
发表于 2006-05-20 22:53 |只看该作者
原帖由 flw 于 2006-5-19 11:46 发表

严重错误!
在 C++ 中是这样,
但是在 Python 中恰恰相反。

Python 中,类对象只是对象的一种,
类对象支持两种操作:属性引用和实例化,类被实例化之后,产生类实例对象,这又是一种不同于类对象的新型对 ...


这根C++的static类成员有区别么? C++的类你也可以这么理解

论坛徽章:
0
19 [报告]
发表于 2006-05-20 22:55 |只看该作者
原帖由 flw 于 2006-5-19 19:33 发表

其实 C++ 中的对象相当于 Python 中的类实例对象,
而 Python 中的类也是对象,这一点和 C++ 有最大的区别,
C++ 的类是“类型”,没有实体(虽然静态成员变量有实体)。
C++ 中的类只能用来访问属性和实例化 ...


你说的是类似于java的reflection机制, 这个在B教主的C++0x据说会支持. 其实python跟C++比的亮点关键是语言特性容易做FP,以及type inference机制带来的抽象统一能力以及动态能力

[ 本帖最后由 zengjin8310 于 2006-5-20 23:07 编辑 ]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
20 [报告]
发表于 2006-05-21 11:06 |只看该作者
原帖由 zengjin8310 于 2006-5-20 22:53 发表


C++的static类成员有区别么? C++的类你也可以这么理解

当然有区别,如果你懂的话。
这个道理的明显程度就好比“根”应该写作“跟”,如果你懂汉语的话。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP