[問題] anonymous inner classes??

看板Python作者 (Arim5566)時間12年前 (2013/10/05 15:53), 編輯推噓4(409)
留言13則, 3人參與, 最新討論串1/1
各位版友好 如果我有一個 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

10/05 17:39, , 1F
Inner class 可以, anonymous 不行
10/05 17:39, 1F

10/06 14:32, , 2F
python 好像不能動態改 __hash__ 不太知道為什麼@@
10/06 14:32, 2F

10/06 14:41, , 3F
不過剛剛查了一下,type 我覺得很好啊~
10/06 14:41, 3F

10/06 14:42, , 4F
恩...不過 function 不能縮成 lambda 的話要另外寫就是了
10/06 14:42, 4F

10/06 16:06, , 5F
另外訂 self.custom_hash_function, 然後 __hash__ 去 call
10/06 16:06, 5F

10/06 16:07, , 6F
只是這樣會多呼叫的成本, inner class 或是 type 都不錯啊
10/06 16:07, 6F

10/06 16:13, , 7F
p.s. 也許不一定要用 __hash__ 來實作?
10/06 16:13, 7F

10/06 16:17, , 9F
__hash__() 理論上不能變, 所以應該在 class 定義裡改
10/06 16:17, 9F

10/06 16:17, , 10F
而不要動態去改物件的 __hash__,有點 hack 啦
10/06 16:17, 10F

10/07 11:26, , 11F
動態改 hash 邏輯上不通, hash 應該要可以代表該物件本身
10/07 11:26, 11F

10/07 11:27, , 12F
會動態改變的話豈不是代表該物件會自動變形, 又不是在演
10/07 11:27, 12F

10/07 11:28, , 13F
魔鬼終結者 2 那個液態金屬人...
10/07 11:28, 13F
文章代碼(AID): #1IJyMCFr (Python)
文章代碼(AID): #1IJyMCFr (Python)