CodingLifeDay6:Python:面向对象基础知识Section3

目录

1,查看类的属性和方法

2,hash

①内置函数hash()

②面向对象中的__hash__()


1,查看类的属性和方法

查看类的属性和方法

print(dir(class_name))

判断类中是否存在某个属性或方法

print('function_name' in dir(class_name))

2,hash

①内置函数hash()

语法格式:hash(object),返回值是object的哈希值

三个特征:

1,相同的哈希值可能来自于不同的object

print(hash(-1), hash(-2)) # -2 -2

2,并非所有的对象都可以使用hash(),如列表、字典、集合

print(hash({'key': 'value'})) # TypeError: unhashable type: 'dict'

3,每次运行.py文件,同一个对象的哈希值可能不同

print(hash('-1')) # 第一次:6926710966680372037
                  # 第二次:7974068616234152760
                  # 第三次:-3282573047475317704

②面向对象中的__hash__()

object.__hash__() == hash(object)

print('-1'.__hash__() == hash('-1')) # True

说明:如果在类中重写了__hash__()方法(必须返回int类型,否则会报错),那么hash(实例)实际上就是在调用实例的__hash__()方法。

class test:
    def __init__(self, hash_value):
        self.hash_value = hash_value

    def __hash__(self):
        return self.hash_value

test_object = test(520)

print(hash(test_object)) # 520
                         # 注释掉__hash__方法后,得到的结果是131573885106
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值