JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Java SE 討論區  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友   
reply to postflat modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 Re:Java 違反物件導向?? [Re:harrisonlin]
Duncan

還隱隱作痛

版主

發文: 7816
積分: 39
於 2003-08-22 19:56 user profilesend a private message to usersend email to Duncanreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
harrisonlin wrote:
我所說"Python"不是純OO語言,是指可以使用Python來完成工作的手法,不必一定是OO的,也可以把它當作程序導向的語言來使用!猶如C++也是hybrid一樣,不是嗎?


C/C++ 你可以寫個 main method 就完成程式的全部,不用到任何物件的觀念。但是你用 Python 寫幾行你認為的 script 作點小事情,其實已經有 OO 的味道在裡頭。

1
2
3
4
5
6
7
8
# writen in Python language
>>> dir(5)
['__abs__', '__add__', '__and__', '__class__', '__cmp__', '__coerce__', '__delattr__', '__div__', '__divmod__', '__doc__', 
'__float__', '__floordiv__', '__getattribute__', '__hash__', '__hex__', '__init__', '__int__', '__invert__', '__long__', 
'__lshift__', '__mod__', '__mul__', '__neg__', '__new__', '__nonzero__', '__oct__', '__or__', '__pos__', 
'__pow__', '__radd__', '__rand__', '__rdiv__', '__rdivmod__', '__reduce__', '__repr__', '__rfloordiv__', '__rlshift__', 
'__rmod__', '__rmul__', '__ror__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', 
'__setattr__', '__str__', '__sub__', '__truediv__', '__xor__']

Python 沒有 primitive types 只有內建的 type(numeric: integer, long, float, complex; sequence: string, tuple, list; Mapping: Dictionary; etc..)。即使是 numeric literal 代表的也是有數值意義的物件,由 dir(5) 可看出 5 所支援的操作。

1
2
3
4
5
6
>>> a=87
>>> b=87
>>> a==b
1
>>> a is b
1

前一段說過像 5 這樣的數值本質上是個物件,a=87; b=87 並不是把 87 這個 value copy 給 a, b 兩變數,而是把一個 integer object 其值為 87 的物件之 reference assign 給 a, b 變數,所以用 "is" operator 來測試兩個變數所參考的物件是否為同一個(operator == 才是比較兩者的值),結果是同一個。

1
2
3
4
5
6
7
8
9
>>> def SayHello():
  print 'Hello, guys!'
 
  
>>> Hi=SayHello
>>> SayHello()
Hello, guys!
>>> Hi()
Hello, guys!

用 def 去定義一個函式,在 Python 裡這不是一個 declaration,而是一個有執行動作的 statement,定義(組裝)了一個 function/callable object,行為是:
1
print 'Hello, guys!'

"並" assign 這個 function/callable object reference 給 SayHello 變數,可以將這個 object reference 再 copy 給另一變數 Hi,之後可以透過 Hi 變數來執行這個 function/callable。

你說上面這些加起來只不過是一些零散的碼而已?
當你在 Python console 寫這些碼時,其實是在一個叫做 __main__ 的 module 裡(module 也是一種型態的物件。另外,當你寫的 Python module 透過 Python interpreter 直接來執行而不是作匯入的動作時,module 的內容就變成 __main__ module 的一部份),可說是 module 的一部份,只是 Python 幾乎沒有純宣告/定義的 statement(除了 global keyword 的用法外),每個 statement 都有執行動作(在定義類別時也不例外),所以看起來好像在寫 code,但也可以視為 member definition。

這裡是 Java 版,不方便提太多 Python 的東西。我只是要表達,同樣的碼拿到 C++ 語言 main function 裡,可以說是很沒有 OO 的概念,但是放在 Python 裡,我覺得很有 OO 的味道,這就是 C++, Python 本質上的差異。你可以說 Python 為一 hybrid PL,但以我個人的使用經驗,我覺得 Python 算是蠻純的 OOP,不論是比起 C++ 亦或是 Java。


Duncan edited on 2003-08-22 19:59
reply to postreply to post

給我
辣味豆腐 其餘免談
話題樹型展開
人氣 標題 作者 字數 發文時間
13702 [精華] Java 違反物件導向?? Eva 71 2003-08-20 20:04
12431 Re:Java 違反物件導向?? iampoya 10 2003-08-20 20:10
12637 Re:Java 違反物件導向?? Duncan 105 2003-08-20 21:36
12418 Re:Java 違反物件導向?? iampoya 29 2003-08-20 21:43
12444 Re:Java 違反物件導向?? linexpmail 118 2003-08-20 21:45
12382 Re:Java 違反物件導向?? Duncan 223 2003-08-20 22:40
13094 Re:Java 違反物件導向?? popcorny 703 2003-08-22 11:16
8745 Re:Java 違反物件導向?? adoo 346 2006-05-22 11:32
8566 Re:Java 違反物件導向?? chain710915 272 2006-06-14 14:40
12197 Re:Java 違反物件導向?? Eva 53 2003-08-20 22:12
12580 Re:Java 違反物件導向?? caterpillar 266 2003-08-20 22:46
12153 Re:Java 違反物件導向?? ray_linn 25 2003-08-22 10:18
12155 Re:Java 違反物件導向?? harrisonlin 226 2003-08-22 07:46
12108 Re:Java 違反物件導向?? Duncan 439 2003-08-22 12:40
11999 Re:Java 違反物件導向?? harrisonlin 295 2003-08-22 14:49
12606 Re:Java 違反物件導向?? Duncan 2456 2003-08-22 19:56
11909 Re:Java 違反物件導向?? harrisonlin 334 2003-08-22 22:44
12024 Re:Java 違反物件導向?? harrisonlin 59 2003-08-22 07:49
12194 Re:Java 違反物件導向?? ianhong 0 2003-08-22 09:58
12014 Re:Java 違反物件導向?? harrisonlin 156 2003-08-22 10:13
12150 Re:Java 違反物件導向?? ianhong 0 2003-08-22 10:32
11991 Re:Java 違反物件導向?? harrisonlin 77 2003-08-22 10:42
9244 Re:Java 違反物件導向?? momotalo 124 2006-04-17 12:04
12385 Re:Java 違反物件導向?? T55555 434 2003-09-05 05:25
9428 Re:Java 違反物件導向?? 800 155 2006-04-15 00:53
11931 Re:Java 違反物件導向?? dasein 10 2003-08-27 00:19
12118 Re:Java 違反物件導向?? eat_meat 116 2003-08-31 01:02
9021 Re:Java 違反物件導向?? along9302003 231 2006-05-16 17:06
8796 Re:Java 違反物件導向?? jackwu 112 2006-05-17 02:07
8951 Re:Java 違反物件導向?? chain710915 180 2006-05-19 15:33
8747 Re:Java 違反物件導向?? alien 440 2006-05-20 15:28
8524 Re:Java 違反物件導向?? chain710915 418 2006-06-14 14:25
8320 Re:Java 違反物件導向?? alien 879 2006-06-14 17:28
8580 Re:Java 違反物件導向?? chain710915 477 2006-06-14 17:45
10657 Re:Java 違反物件導向?? alien 564 2006-06-14 18:39
» JWorld@TW »  Java SE 討論區

reply to postflat modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8