BBS.ChinaUnix.net
首页 | 新闻 | Linux | FreeBSD | AIX | Windows | 博客 | 论坛 | 存储 | 网络 | 人才 | Wiki | 资料 | 读书 | 手册 | 下载 | 空间 | 搜索
  免费注册 | 忘记密码 | 会员登录 | 搜索 | 帮助 



为什么觉得python的面向对象这么别扭
首页 » 论坛 » Python »  
[打印] [订阅] [收藏] [本帖文本页] [推荐此主题给朋友,立即获积分]
guijia8427   帅哥
法王
. 老 A. ...



CU编号: 602748
注册:2007-8-14
最后登录: 2009-07-03
帖子:18284
精华:4

可用积分:3799 (小富即安)
信誉积分:135
专家积分:1232 (本版:0)
空间积分:0
推广积分:0

来自:你家...............
状态:...保密...

[个人空间] [短信] [博客]


1楼 发表于 2007-8-16 14:53 

我对 JAVA比较熟 现在学python的面向对象程序设计 感觉特别别扭 特别是 self 怎么设计个这东西出来 用起来真的很不爽!
python别的都还挺好的



您对本贴的看法:鲜花[1] 臭蛋[0]

__________________________________

宗教不仅要让人有所憧憬,更要让人有所畏惧。
limodou   帅哥
天使




CU编号: 279672
注册:2005-6-11
最后登录: 2009-03-22
帖子:1469
精华:1

可用积分:1569 (家境小康)
信誉积分:100
专家积分:10 (本版:10)
空间积分:0
推广积分:0

状态:...离线...

[个人空间] [短信] [博客]


2楼 发表于 2007-8-16 15:19 

java不也有this吗?self的作用和this一样,只不过大家习惯使用self了。其实并不是python不能省略self,而这就是python的设计或是哲学。显示比隐晦要好。使用self让人一看就知道它是实例自身。习惯就好了。



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

I like python!
UliPad <<The Python Editor>>: http://code.google.com/p/ulipad
UliWeb <<uliweb web framework>>: http://uliwebproject.appspot.com
My Blog: http://hi.baidu.com/limodou
book11   帅哥
圣骑士




CU编号: 441854
注册:2006-7-14
最后登录: 2008-08-23
帖子:87
精华:0

可用积分:85 (白手起家)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0

状态:...离线...

[个人空间] [短信] [博客]


3楼 发表于 2007-8-17 08:47 

ls正解
import this



您对本贴的看法:鲜花[0] 臭蛋[0]
huangyiiiiii
侠客




CU编号: 331861
注册:2005-11-4
最后登录: 2008-11-05
帖子:35
精华:0

可用积分:35 (白手起家)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0

状态:...离线...

[个人空间] [短信] [博客]


4楼 发表于 2007-8-19 12:52 



QUOTE:
原帖由 guijia8427 于 2007-8-16 14:53 发表
我对 JAVA比较熟 现在学python的面向对象程序设计 感觉特别别扭 特别是 self 怎么设计个这东西出来 用起来真的很不爽!
python别的都还挺好的

啥也不说了,

In [1]: def greet(someone, anotherone):
   ...:     print someone, 'say hello to', anotherone
   ...:

In [2]: class Person(object):
   ...:     def __init__(self, name):
   ...:         self.name=name
   ...:     def __str__(self):
   ...:         return self.name
   ...:

In [3]: p1 = Person('test1')

In [4]: p2 = Person('test2')

In [5]: greet(p1, p2)
test1 say hello to test2

In [6]: Person.greet = greet

In [7]: p1.greet(p2)
test1 say hello to test2



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

http://codeplayer.blogspot.com
Benson_linux   帅哥
风云使者



CU编号: 249802
注册:2005-4-4
最后登录: 2009-06-07
帖子:641
精华:0

可用积分:1075 (家境小康)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0

状态:...离线...

[个人空间] [短信] [博客]


5楼 发表于 2007-8-20 00:01 

这个做法更贴近C语言的实现面向对象的实现方法。



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

如果我的青春是干柴,

我要让它不停的燃烧。

如果中国的嵌入式是一把新火,

我要让它烧得更旺。

绿色的生命也有热血,经霜后你才发现。
gm8pleasure   帅哥
精灵



CU编号: 315287
注册:2005-9-19
最后登录: 2008-10-06
帖子:172
精华:0

可用积分:281 (稍有积蓄)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0

状态:...离线...

[个人空间] [短信] [博客]


6楼 发表于 2007-8-20 10:57 

感觉还可以,不是非常的怪异啊!不管老是写self确实有点烦,不如Ruby的@



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

努力的工作,认真的吃喝,痛快的睡觉
limodou   帅哥
天使




CU编号: 279672
注册:2005-6-11
最后登录: 2009-03-22
帖子:1469
精华:1

可用积分:1569 (家境小康)
信誉积分:100
专家积分:10 (本版:10)
空间积分:0
推广积分:0

状态:...离线...

[个人空间] [短信] [博客]


7楼 发表于 2007-8-20 12:18 

python中的@另有用法



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

I like python!
UliPad <<The Python Editor>>: http://code.google.com/p/ulipad
UliWeb <<uliweb web framework>>: http://uliwebproject.appspot.com
My Blog: http://hi.baidu.com/limodou
DennisRitchie
风云使者



CU编号: 591447
注册:2007-7-24
最后登录: 2007-10-20
帖子:495
精华:1

可用积分:290 (稍有积蓄)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0

状态:...离线...

[个人空间] [短信] [博客]


8楼 发表于 2007-8-21 13:57 

同感



您对本贴的看法:鲜花[0] 臭蛋[0]
CNIU
侠客




CU编号: 586613
注册:2007-7-13
最后登录: 2007-11-06
帖子:41
精华:0

可用积分:41 (白手起家)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0

状态:...离线...

[个人空间] [短信] [博客]


9楼 发表于 2007-8-21 14:29 

啥也不说了,

In [1]: def greet(someone, anotherone):
   ...:     print someone, 'say hello to', anotherone
   ...:

In [2]: class Person(object):
&n ... [/quote]

在class内部,C++和Java都不需要显示的使用this指针的,这段代码的情况是一种风格问题,在C++和Java里,可以这样用,但是m_*或者_*也非常清晰,而且很多并没有这种名字冲突的地方也要这样用就显得很烦了。。而且,内部需要显示用self,而外部不用,形式上就很矛盾。鄙人是python的初学者,欢迎大侠批评指点!

[ 本帖最后由 CNIU 于 2007-8-21 14:30 编辑 ]



您对本贴的看法:鲜花[0] 臭蛋[0]
limodou   帅哥
天使




CU编号: 279672
注册:2005-6-11
最后登录: 2009-03-22
帖子:1469
精华:1

可用积分:1569 (家境小康)
信誉积分:100
专家积分:10 (本版:10)
空间积分:0
推广积分:0

状态:...离线...

[个人空间] [短信] [博客]


10楼 发表于 2007-8-21 18:10 

就象this是用在内部一样,self当然也是用在内部了。而且内部的this的省略我已经说过,并不是python做不到,而不是想做成这个样子。这样更清晰地知道哪个是实例变量,那个是局部变量。对于象c++/java之类的感觉上是少敲了一些字符,但是毕竟是你心中已经知道有这么一种隐性的规则。 如果你不从类定义开始看程序,乍一个没有使用 this的变量,很有可能不能马上知道这是否是局部变量还是一个实例类量。而显式地使用 self就没有这个问题。

这就是语言设计者的思考方式不同造成的。我觉得挺好。



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

I like python!
UliPad <<The Python Editor>>: http://code.google.com/p/ulipad
UliWeb <<uliweb web framework>>: http://uliwebproject.appspot.com
My Blog: http://hi.baidu.com/limodou

首页 » 论坛 » Python »


 


Copyright © 2001-2009 ChinaUnix.net All Rights Reserved     联系我们:

感谢所有关心和支持过ChinaUnix的朋友们    转载本站内容请注明原作者名及出处

京ICP证041476号


清除 Cookies - ChinaUnix - Archiver - WAP - TOP

Processed in 0.048913 second(s), 4 queries , Gzip enabled