先贴一段自己测试的代码,是用Python的dictionary实现的一个Hashmap。(Hash的实现方式以后再研究)
class HashC(): def new(self, num_buckets=256): """Initializes a Map with the given number of buckets.""" aMap = [] for i in range(0, num_buckets): aMap.append([]) return aMap def hash_key(self, aMap, key): """Given a key this will create a number and then convert it to an index for the aMap's buckets.""" print hash(key) print len(aMap) print hash(key) % len(aMap) return hash(key) % len(aMap) def get_bucket(aMap, key): """Given a key, find the bucket where it would go.""" bucket_id = hash_key(aMap, key) return aMap[bucket_id] def get_slot(aMap, key, default=None): """ Returns the index, key, and value of a slot found in a bucket. Returns -1, key, and default (None if not set) when not found. """ bucket = get_bucket(aMap, key) for i, kv in enumerate(bucket): k, v = kv if key == k: return i, k, v return -1, key, default def get(aMap, key, default=None): """Gets the value in a bucket for the given key, or the default.""" i, k, v = get_slot(aMap, key, default=default) return v def set(aMap, key, value): """Sets the key to the value, replacing any existing value.""" bucket = get_bucket(aMap, key) i, k, v = get_slot(aMap, key) if i >= 0: # the key exists, replace it bucket[i] = (key, value) else: # the key does not, append to create it bucket.append((key, value)) def delete(aMap, key): """Deletes the given key from the Map.""" bucket = get_bucket(aMap, key) for i in xrange(len(bucket)): k, v = bucket[i] if key == k: del bucket[i] break def list(aMap): """Prints out what's in the Map.""" for bucket in aMap: if bucket: for k, v in bucket: print k, v test = HashC() mymap = test.new() test.hash_key(mymap, "a")
Python要self的理由
Python的类的方法和普通的函数有一个很明显的区别,在类的方法必须有个额外的第一个参数 (self ),但在调用这个方法的时候不必为这个参数赋值 (显胜于隐 的引发)。Python的类的方法的这个特别的参数指代的是对象本身,而按照Python的惯例,它用self来表示。(当然我们也可以用其他任何名称来代替,只是规范和标准在那建议我们一致使用self)
例子说明:创建了一个类HachC,实例化HachC得到了test这个对象,然后调用这个对象的方法test.new(), test.hash_key(mymap, "a") ,这个过程中,Python会自动转为HachC.hash_key(test,arg1,arg2)
这就是Python的self的原理了。即使你的类的方法不需要任何参数,但还是得给这个方法定义一个self参数,虽然我们在实例化调用的时候不用理会这个参数不用给它赋值。
self在Python里不是关键字。self代表当前对象的地址。self能避免非限定调用造成的全局变量。
代码出处: http://learnpythonthehardway.org/book/ex39.html
解释引用: http://sjolzy.cn/Why-should-self-Python.html
相关推荐
程序员小飞解密——纯新手的我,到底该把宝押在python2还是python3??
在这个项目中,我们关注的是一个利用Python编写的虾米音乐下载器。虾米音乐是一个知名的在线音乐平台,提供丰富的音乐资源。然而,由于版权问题和平台政策,直接下载其音乐文件通常是不允许的。但通过编写特定的脚本...
我们在使用 Python 中的 方法 method 时,经常会看到 参数中带有 self,但是我们也没对这个参数进行赋值,那么这个参数到底是啥意思呢? 2、知识点 2.1 成员函数(m) 和 普通方法(f) Python 中的 “类方法” 必须有一...
Python 面试题及答案 Python 是一种解释型语言,主要功能是动态语言、面向对象编程、函数式编程、胶水代码等。Python 中的列表和元组有什么区别?列表是可变的,可以添加、删除元素,而元组是不可变的。 Python ...
在Python的面向对象编程中,`self`是一个非常关键的概念,它是用来链接对象与对象方法的关键纽带。在定义类的实例方法或构造方法时,`self`参数是必不可少的,虽然Python并没有强制要求使用这个名字,但`self`已经...
python3.6.2写的窗口置顶程序,windows10下测试可用,用到tkinter,pypiwin32
《Python Basics A Self-Teaching Introduction》是一本旨在引导初学者深入理解Python编程基础的教材。这本书涵盖了Python语言的核心概念,旨在帮助读者通过自学掌握Python编程。"teaching python"这个标签表明本书...
Python 3.9.0 文档 欢迎!这里是 Python 3.9.0 的中文文档。 按章节浏览文档: Python 3.9 有什么新变化? 或显示自 2.0 以来的全部新变化 入门教程 从这里看起 标准库参考 放在枕边作为参考 语言参考 讲解...
6. **Python中的self是什么?** `self`是一个指向对象本身的引用,常用于类的方法中,以便访问和修改对象的属性。例如: ```python class MyClass: def __init__(self, name): self.name = name def print_...
这是基于串口通信的python源程序,亲自调试没有问题。将自己PC通过串口连接其他PC或者兼容串口通信的设备或者传感器,可以读取到对方发送的数据。注意第一次发送的cmd地址指令集中的数据要符合自己的报文通信格式。
在Python编程语言中,`self`和`__self__`都是与对象和方法相关的概念,但它们的作用和使用场景略有不同。本文将深入探讨这两个标识符的区别及其在Python中的作用。 首先,`self`是一个约定俗成的参数,通常在定义类...
在Java世界中,使用bouncycastle进行SM2操作相对简单,但当需要在Python中实现相同功能时,情况可能会复杂一些,因为Python的标准库没有内置对SM2的支持。 首先,我们需要一个Python库来处理SM2算法。目前,有如`...
在Python编程语言中,`self` 是一个非常关键的概念,特别是在面向对象编程中。`self` 关键字是用来引用类的实例对象的,它在类的定义中扮演着类似Java中的`this`的角色。理解`self`的用法对于编写复杂的Python程序至...
在Python编程语言中,类是创建对象的基础,而`self`是一个特殊参数,它在类的方法中扮演着至关重要的角色。本文将深入探讨`self`的含义、作用以及如何在实际编程中正确使用它。 首先,`self`并非Python的保留关键字...
在Python编程语言中,`self` 是一个非常关键的概念,特别是在类(class)的定义和对象(instance)的创建中。`self` 关键字在Python中用来引用类的实例,它是一个指向对象本身的引用,使得我们可以从类的方法中访问...
**Python连连看小游戏源代码详解** 在编程领域,制作小游戏是一种常见的学习和实践方式,而“连连看”作为一款广受欢迎的休闲游戏,其Python实现更是吸引了许多初级和中级开发者。这个项目是基于Python语言构建的,...
在Python编程中,类是创建对象的蓝图,而self是一个非常关键的概念,它与类的方法密切相关。本文将详细解释Python类中self参数的用法及其重要性。 首先,self是Python类方法的一个特殊参数,它总是作为方法的第一个...
在本教程中,我们将深入探讨如何使用 Python 从零开始构建一个简单的神经网络。神经网络是一种受生物神经元结构启发的计算模型,广泛应用于机器学习和人工智能领域,如图像识别、自然语言处理等。Python 作为一门易...
资源分类:Python库 所属语言:Python 资源全名:python_purify-1.0.0.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059