作者Arim (Arim5566)
看板Python
標題[問題] anonymous inner classe??
時間Sat Oct 5 15:53:44 2013
各位版友好
如果我有一個
class point:
...
def __hash__(self):
return self.x+self.y
我想要建立一個class繼承自point,並且override __hash__(self)
可是由於只要用到一次
所以不想再額外建立subclass
在java中可以用anonymous inner classes做到
但在python可以做到嗎?
有查到可以用type(name, bases, dict)做到
不過看還是有點不簡潔..
有更簡潔的方法嗎?
--
~宅男的四個徵兆~
∠□ ○ ! * \○/ ★ (○ ?
╦╦└□ " ○□═ □ □>
║║√√ ╦══╦ ∥ |\
一回家就上PTT 每天想正妹 以當好人為樂 忘記正妹虧欠自己
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.39.110.109
1F:→ uranusjr:Inner class 可以, anonymous 不行 10/05 17:39
2F:推 darkgerm:python 好像不能動態改 __hash__ 不太知道為什麼@@ 10/06 14:32
3F:→ darkgerm:不過剛剛查了一下,type 我覺得很好啊~ 10/06 14:41
4F:→ darkgerm:恩...不過 function 不能縮成 lambda 的話要另外寫就是了 10/06 14:42
5F:推 sonyu:另外訂 self.custom_hash_function, 然後 __hash__ 去 call 10/06 16:06
6F:→ sonyu:只是這樣會多呼叫的成本, inner class 或是 type 都不錯啊 10/06 16:07
7F:推 sonyu:p.s. 也許不一定要用 __hash__ 來實作? 10/06 16:13
9F:→ sonyu:__hash__() 理論上不能變, 所以應該在 class 定義裡改 10/06 16:17
10F:→ sonyu:而不要動態去改物件的 __hash__,有點 hack 啦 10/06 16:17
11F:→ uranusjr:動態改 hash 邏輯上不通, hash 應該要可以代表該物件本身 10/07 11:26
12F:→ uranusjr:會動態改變的話豈不是代表該物件會自動變形, 又不是在演 10/07 11:27
13F:→ uranusjr:魔鬼終結者 2 那個液態金屬人... 10/07 11:28