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