一道 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

最后个人的解决方法:

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
时间: 2024-11-01 20:57:27

一道 Python 类的笔试题详解的相关文章

C++经典笔试题详解

1.static有什么用途?(请至少说明两种) 1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变. 2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问.它是一个本地的全局变量. 3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用.那就是,这个函数被限制在声明它的模块的本地范围内使用 2.引用与指针有什么区别? 1) 引用必须被初始化,指针不必. 2) 引用初始化以后不能被改变,指针可以改变所指的对象.

百度2014软件开发工程师笔试题详解 (转)

转:http://blog.csdn.net/zs634134578/article/details/21387117 一.简答题 1.简述iso的7层设计 解析: 应用层:提供应用程序间通信 表示层:处理数据格式.数据加密等 会话层:建立.维护和管理会话 运输层:建立主机端到端连接 网络层:寻址和路由选择 数据链路层:介质访问,链路管理 物理层:比特流传输 2.如何在多个进程间进行数据共享(至少写出3种) Linux下: 管道 信号量 共享内存 消息队列 本地域socket Windows下:

阿里巴巴2014笔试题详解(9月22北京)(转)

转:http://blog.csdn.net/zs634134578/article/details/21101971 第一部分  单选题(前10题,每题2分:后10题,每题3分.选对得满分,选错倒扣1分,不选得0分) 1.一次内存访问,SSD硬盘访问和SATA硬盘随机访问的时间分别是() A.几微秒,几毫秒,几十毫秒     B.几十纳秒,几十毫秒,几十毫秒 C.几十纳秒,几十微秒,几十毫秒 D.几微秒,几十微秒,几十毫秒 解析:内存访问速度通常在50ns到80ns范围内,SSD硬盘的访问速度

金蝶长沙2016实习生笔试题详解(部分)

1.小数类型,单精度,双精度? 小数类型(decimal) 1)最高精度的类型数据. 2)占用16个字节(128位),主要满足需要高精度的财务和金融计算机领域,精度为29位. 3)必须后面跟m或M后缀来表示他是decimal类型的,否则会被解释成标准的浮点类型数据,导致数据类型不匹配. 单精度(float) 1)占位:32位. 2)精度:7位. 双精度(double) 1)占位:64位. 2)精度:15~16位. 2.输出什么? 答案:输出“File”. 3.----------- 4.输出什么

Python中的高级数据结构详解

这篇文章主要介绍了Python中的高级数据结构详解,本文讲解了Collection.Array.Heapq.Bisect.Weakref.Copy以及Pprint这些数据结构的用法,需要的朋友可以参考下 数据结构 数据结构的概念很好理解,就是用来将数据组织在一起的结构.换句话说,数据结构是用来存储一系列关联数据的东西.在Python中有四种内建的数据结构,分别是List.Tuple.Dictionary以及Set.大部分的应用程序不需要其他类型的数据结构,但若是真需要也有很多高级数据结构可供选择

Python中格式化format()方法详解

Python中格式化format()方法详解 Python中格式化输出字符串使用format()函数, 字符串即类, 可以使用方法; Python是完全面向对象的语言, 任何东西都是对象; 字符串的参数使用{NUM}进行表示,0, 表示第一个参数,1, 表示第二个参数, 以后顺次递加; 使用":", 指定代表元素需要的操作, 如":.3"小数点三位, ":8"占8个字符空间等; 还可以添加特定的字母, 如: 'b' - 二进制. 将数字以2为基数

好程序员web前端学习路线大厂面试题详解

好程序员web前端学习路线大厂面试题详解,依赖注入原理 手动实现依赖注入实现方式 - var _global={ - ajax:function(){//申明服务,也可以说是内部类 - this.get=function(){ - //todo:get方式请求数据 - console.log(“get is success”); - }; - This.post=function(){ - //todo:post方式请求数据 - console.log(“post is success”); -

不止面试02-JVM内存模型面试题详解

第一部分:面试题 本篇文章我们将尝试回答以下问题: 描述一下jvm的内存结构 描述一下jvm的内存模型 谈一下你对常量池的理解 什么情况下会发生栈内存溢出?和内存溢出有什么不同? String str = new String("abc")创建了多少个实例? 第二部分:深入原理 ok,开始.怎们还是先讲原理,再说答案.如果时间不足,也可以直接跳到最后看答案. 本次分享我们主要围绕jvm内存结构展开,这也是java面试必考知识点之一.所以我们先来看看jvm内存结构到底是啥样子. 1. j

Python中 if __name__ == '__main__': 详解

一个python文件就可以看作是一个python的模块,这个python模块(.py文件)有两种使用方式:直接运行和作为模块被其他模块调用. __name__:每一个模块都有一个内置属性__name__.而__name__的值取决与python模块(.py文件)的使用方式. 如果是直接运行,那么这个模块的__name__值就是“__main__”: 如果是作为模块被其他模块调用,那么这个模块(.py文件)的__name__值就是该模块(.py文件)的文件名,且不带路径和文件扩展名. 参考: ht