文档章节

一道 Python 类的笔试题详解

MtrS
 MtrS
发布于 2014/11/07 13:20
字数 291
阅读 216
收藏 12

<!-- lang: python -->

 r = {} 
class C(object):
   def __init__(self, a, b):
        self.a = a
        self.b = b
        if b == 'a':
            orig = super(C, cls)
            r[cls.instance] = 1

a = C(1, 'a')
b = C(1, 'a')
c = C(1, 'b')
l = [a, b, c] 
for i in l:
if i not in r:
    r[i] = 1  
else:
    r[i] += 1

assert r[a] == 2
assert r[b] == 2 
assert r[c] == 1 

原题目要求如下: 修改 C 类, 使得下面的 断言成立:

要想使下面的断言成立,既需要满足 item in r , 而 a 和 b 同属于 C 类, 且参数一致, a 初次赋值 给 r 字典的时候, r[a] = 1, b 赋值给 r 字典的时候 更改 使得 r[b] = r[a] + 1 此时 r[a] = r[b] =2 即满足 题目要求, 要使得 r[b] = r[a] + 1 此时需要 hash(a) == hash(b) , 在类里面满足 hash(self) , 使得 a,b 哈西值一致。

另外需要满足的时 给 r[b] 赋值时, 字典自身检测到 字典已经包含该 键, 类 需要满足一个方法 eq(self, other): 使得 a == b

最后个人的解决方法:

<!-- lang: python -->

class C(object):

def __init__(self, a, b):
    self.a = a
    self.b = b

def __eq__(self, other):
    return self.a == other.a and self.b== other.b

def __hash__(self):
    return self.a

© 著作权归作者所有

共有 人打赏支持
MtrS
粉丝 30
博文 549
码字总数 352132
作品 0
榆林
关于腾讯的一道字符串匹配的面试题

Question: 假设两个字符串中所含有的字符和个数都相同我们就叫这两个字符串匹配, 比如:abcda和adabc,由于出现的字符个数都是相同,只是顺序不同, 所以这两个字符串是匹配的。要求高效! ...

大数据之路
2012/09/16
0
2
LeetCode Reverse Integer

最近开始刷刷的Leetcode题,遇到了一道这么一个简单的题 Reverse Integer ,然而并没有看上去的那么简单, 特殊的坑就如这道题说的 overflow ! 一开始天真的认为就是每个语言自己定义的最大整数...

L很失败L
2015/06/13
0
0
来自非专业Python讲师的一份Django考题,面试无忧!

Django的面试题少之又少,然而对于Python程序员又不得不掌握。 可以考察笔试者对于框架的理解和使用熟练度,展开了问,也可以问到很深的地方。 Django的Model的继承有几种形式,分别是什么?...

Python新世界
07/12
0
0
Twitter算法面试题详解(Java实现)

最近在网上看到一道Twitter的算法面试题,网上已经有人给出了答案,不过可能有些人没太看明白(我也未验证是否正确),现在给出一个比较好理解的答案。先看一下题目。 图1 先看看图图1。可以...

androidguy
06/29
0
0
意淫系列-2018美图春招笔试题

2018美图春招笔试题 只是试水,没有A类会议拒绝实习。 题不难,陪女朋友吃饭去了,然后就没怎么时间,只是看了下题。 题型:选择题和编程题,选择题25道,涉及数据结构,C,Python,C++,图像...

googler_offer
04/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

JS三元运算示例

1. topFlag=topFlag ==0?1:0; 等于 if(topFlag=00){ topFlag=1; }else if(topFlag == 1){ topFlag=0; } 2. 5>3?alert('5大'):alert('3大'); 即 if(5>3){alert('5大')}else{alert('3大')}; 注......

森火
今天
0
0
利用Slf4j的MDC跟踪方法调用链

why? 一个web项目通常提供很多URL访问地址, 项目一般都是分层处理,例如Controller——>Service——>DAO。 如果想根据日志查看用户一次请求都走了哪些方法(多数是查错误)。 如果系统是多人...

杨春炼
今天
7
0
Maven介绍及安装

Maven介绍及安装 以下内容是本人早期学习时的笔记,可能比较详实繁琐,现在复习一下Maven,顺便将内容抛出来,供大家一起学习进步。 一、Maven简介 Maven是Apache旗下的一款项目管理工具,是...

星汉
今天
0
0
小程序Aes解密

主要步骤: 1、下载AES源码(JS版) 2、在小程序中新建一个公共的文件夹,把AES源码拷贝进去(注意:需要暴露接口 module.exports = CryptoJS;) 3、添加一个用于加密解密的公共JS,可取名为...

Mr_Tea伯奕
今天
0
0
Go实现文件传输(基本传输可用)

发送端 package mainimport ("fmt""os""net""io")func SendFile(path string, connect net.Conn){file, oerr :=os.Open(path)if oerr !=nil{fmt.Println("Open", oerr)......

CHONGCHEN
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部