作者Landau (Lev)
看板Python
標題[問題] method宣告self為參數到底有啥用?
時間Mon Sep 6 10:59:01 2010
為何method一定要將self寫進宣告中呢?
實際在呼叫的時候不是也用不到嗎?
搞不太懂這個設計,總覺得很多餘......
希望有人能為我解惑,
謝謝。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.64.139.91
1F:推 areyo:你是在class看到的吧,有點等同於this 09/06 11:04
2F:推 shaopin:你寫的時候雖然沒有, 但底層還是有傳該instance給那functi 09/06 12:55
3F:→ shaopin:當參數, 算是一種識別instance的方法.. 09/06 12:55
4F:推 curist:我只知道可以取別的名字,不一定要叫self 09/06 17:10
5F:→ Landau:可是為何要寫出來呢? C++中也不用特別把this當參數啊 09/07 03:03
6F:→ hilorrk:歷史因素 09/07 04:22
7F:→ DEATHX:版上前輩說過了:self明確寫出是Python的風格 09/07 08:48
8F:→ DEATHX:「Explicit is better than implicit.」 09/07 08:49
9F:→ juiz:不是歷史因素;it's explicity,照慣例也一定要取名作 self 09/07 08:52
10F:→ juiz:classmethod 的第一個引數也必須名為 cls 09/07 08:52
11F:→ juiz:staticmethod 則不可以有 self/cls 09/07 08:53
12F:→ hilorrk:其實explicit self的問題很多人在討論 希望取消的人也想了 09/07 18:17
13F:→ hilorrk:許多解決辦法 但越完美的解決辦法需要越複雜的更動... 09/07 18:17
14F:→ hilorrk:但並不是"必需如此" 所以我基本認為算是歷史因素 09/07 18:18
15F:→ juiz:self/cls 的使用確實是有歷史成分在的 09/07 20:06
16F:→ juiz:但若僅僅只用歷史因素四字說明則是過於簡化了 09/07 20:07