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


为什么觉得python的面向对象这么别扭

  首页 » 论坛 » Python »
[打印] [收藏] [本帖文本页] [推荐此主题给朋友]

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




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



ls正解
import this





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



啥也不说了,

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

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

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
__________________________________
http://codeplayer.blogspot.com



这个做法更贴近C语言的实现面向对象的实现方法。
__________________________________
如果我的青春是干柴,

我要让它不停的燃烧。

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

我要让它烧得更旺。

绿色的生命也有热血,经霜后你才发现。



感觉还可以,不是非常的怪异啊!不管老是写self确实有点烦,不如Ruby的@
__________________________________
努力的工作,认真的吃喝,痛快的睡觉



python中的@另有用法
__________________________________
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



同感



啥也不说了,

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 编辑 ]



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

这就是语言设计者的思考方式不同造成的。我觉得挺好。
__________________________________
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


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

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

京ICP证041476号


清除 Cookies - ChinaUnix - Archiver - WAP - TOP

GMT+8, 2010-02-09 19:18, Processed in 0.034264 second(s), 7 queries, Gzip enabled.