Python 内建函数 - hash(object)

Python的内置函数hash()用于获取对象的哈希值,主要用于字典查找。相等数值的哈希值相同,即使类型不同。自定义__hash__()方法时,返回值会根据主机位宽截断。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Manual

Return the hash value of the object (if it has one). Hash values are integers. They are used to quickly compare dictionary keys during a dictionary lookup. Numeric values that compare equal have the same hash value (even if they are of different types, as is the case for 1 and 1.0).

Note For object’s with custom __hash__() methods, note that hash() truncates the return value based on the bit width of the host machine. See __hash__() for details.

直译

返回object的哈希值(如果它有一个的话)。哈希值是整数,它们用于在字典查找时快速匹配字典键。相等的数字值具有同样的哈希值(即便它们属于不同的类型,例如1和1.0)

注意:对象自定义的__hash__()方法,hash() 基于主机的位宽来截断返回值,详情见__hash__()。

实例

>>> class 优快云:
    def foobar(self):
        print('Hello 优快云er!')
>>> hash(优快云)
4561779

>>> class 优快云:
    def __init(self):
        self.name = '优快云er'
        self.nick = 'Fans'
        self.color = 'Red'
    def __hash__(self):
        return hash((self.name, self.nick, self.color))
    def foobar(self):
        print('Hello 优快云er!')
>>> hash(优快云)
4561807

拓展阅读

__hash__()

### Python 内建类 `object` 的方法列表 Python 中所有的类都继承自基类 `object`。这个基础类提供了一些默认的方法和属性,这些对于所有对象都是可用的。 #### 默认方法 - `__new__()`: 创建并返回一个新的对象实例。此方法是一个静态方法,在调用构造函数时被自动触发[^1]。 - `__init__(self[, ...])`: 初始化新创建的对象。当一个对象被创建之后会立即调用该初始化方法来完成一些必要的设置工作。 - `__str__(self)` 和 `__repr__(self)`: 这两个特殊方法用于定义如何将对象转换成字符串表示形式。前者通常用来生成更易读取的人类友好型描述;后者则倾向于给出可以重现对象状态的信息。 - `__eq__(self, other), __ne__(self, other), __lt__(self, other)...`: 实现比较运算符的行为,比如等于 (`==`)、不等于(`!=`) 或小于(`<`)等操作符的支持。 - `__hash__(self)`: 如果实现了哈希算法,则允许对象作为字典键或集合成员使用。如果未实现或者返回的是 None 值,则意味着此类不可散列化。 - `__getattr__(self, name), __setattr__(self, name, value), __delattr__(self, name)` : 控制访问不存在/存在属性的方式以及删除已有属性的操作逻辑。 下面是一些例子展示部分内置方法: ```python class Example(object): pass example_instance = Example() print(example_instance.__str__()) # 调用了 __str__ print(repr(example_instance)) # 调用了 __repr__ try: iter([]).__next__() except StopIteration as e: print("Caught expected exception:", str(e)) ``` 为了查看特定类型的全部可访问属性(包括来自父类),可以利用 `dir()` 函数获取完整的属性名称列表: ```python number_list = [1, 2, 3] print(dir(number_list)) person_obj = Person() print(dir(person_obj)) ``` 上述代码片段展示了怎样通过 `dir()` 来列举给定对象的所有公共与私有属性及方法[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值