文档章节

一道 Python 类的笔试题详解

MtrS
 MtrS
发布于 2014/11/07 13:20
字数 291
阅读 219
收藏 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
粉丝 32
博文 566
码字总数 357787
作品 0
榆林
私信 提问
关于腾讯的一道字符串匹配的面试题

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

大数据之路
2012/09/16
0
2
面试大法——算法、Python、机器学习等笔试面经资源 | 干货收藏

整理 | Jane 出品 | AI科技大本营 【导读】9 月,正值 2019 秋季招聘热季,最近身边很多小伙伴都是在笔试、面试中艰难生存着,结果却也是喜忧参半。每一年的情形都在变化,但不变的是竞争在增...

AI科技大本营
2018/09/25
0
0
在 GitHub 上收获 6519 颗 Star 的 Python 面试题资源,到底有多牛?

整理 | Jane 出品 | AI科技大本营 9 月,正值 2019 秋季招聘热季,最近身边很多小伙伴都是在笔试、面试中艰难生存着,结果却也是喜忧参半。每一年的情形都在变化,但不变的是竞争在增加,难度...

CSDN资讯
2018/09/24
0
0
面试大法——算法、Python、机器学习等笔试面经资源|干货收藏

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/dQCFKyQDXYm3F8rB0/article/details/82836660 整理 | Jane 出品 | AI科技大本营 【导读】9 月,正值 2019 秋季...

AI科技大本营
2018/09/22
0
0
新书出版 |《数据库程序员面试笔试真题库》

新书出版 《数据库程序员面试笔试真题库》 新书出版 《数据库程序员面试笔试真题库》 书名: 数据库程序员面试笔试真题库 作者:李华荣 定价: 69.00元 出版社名称: 机械工业出版社 出版时间:...

小麦苗
2018/08/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

postgres预写式日志的内核实现详解-heap2类型

导读: postgres预写式日志的内核实现详解-概述 postgres预写式日志的内核实现详解-wal记录结构 postgres预写式日志的内核实现详解-wal记录写入 postgres预写式日志的内核实现详解-wal记录读...

movead
20分钟前
0
0
ToolBar控件在C#开发APP中的使用方式【附案例源码】——Smobiler移动开发平台

控件说明 底部工具栏控件。 效果演示 其他效果 该界面为仿淘宝UI制作的一个简单的UI模板,源码获取方式请拉至文章末尾。 特色属性 属性 属性说明 Direction(相对布局) 容器主轴方向。 Flex...

amanda112
31分钟前
1
0
模块

AMD是"Asynchronous Module Definition"的缩写,意思就是"异步模块定义"。它采用异步方式加载模块,模块的加载不影响它后面语句的运行。所有依赖这个模块的语句,都定义在一个回调函数中,等...

gtandsn
38分钟前
1
0
代码之外的生存指南,这6本书助你提升软实力

上期盟主向大家推荐了6本技术类书籍,引起了热烈反响。那么,工作之余,还有哪些好书能够为你打开更多的精彩世界呢?本期,多位知名企业的技术大咖将继续为您带来好书推荐,在新的一年里,为...

安卓绿色联盟
41分钟前
4
0
5分钟用Jitpack发布开源库

作者: 菜刀文 Demo:https://github.com/helen-x/JitPackReleaseDemo 项目开发中会用到很多开源库, 他们一般通过Maven/Gradle依赖进来的. 演而优则唱,开发越来越溜以后, 你是否也蠢蠢欲动,想发...

SuShine
47分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部