作者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