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

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

我对 JAVA比较熟 现在学python的面向对象程序设计 感觉特别别扭 特别是 self 怎么设计个这东西出来 用起来真的很不爽!
python别的都还挺好的
java不也有this吗?self的作用和this一样,只不过大家习惯使用self了。其实并不是python不能省略self,而这就是python的设计或是哲学。显示比隐晦要好。使用self让人一看就知道它是实例自身。习惯就好了。
ls正解
import this


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
这个做法更贴近C语言的实现面向对象的实现方法。
感觉还可以,不是非常的怪异啊!不管老是写self确实有点烦,不如Ruby的@
python中的@另有用法
同感
啥也不说了,

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的初学者,欢迎大侠批评指点!

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

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