【流畅的Python】第一章:Python的数据类型 ——《Fluent Python》笔记

Python数据类型

GitHub仓库地址,同步更新。

初步接触python的小伙伴可能会有疑问,为什么获取一个容器的大小不是使用collection.len(),而是使用len(collection)

其实这是典型的python风格,等你熟悉之后你就会发现它非常好用。

python在执行len(collection)的时候实际上执行的是collection.__len__()方法。可以理解为Python语言提供了自己的API,然后我们平时自己创建类的时候只需要自己实现class.__len__()方法,然后就可以使用python的len()方法来获取该实例化对象的长度。

类似的obj[key]方法调用的是obj对应类的__getitem__()方法。

因此,可以把Python视作一个通用框架,我们只需要自己重写自己类的具体实现逻辑,就可以做到不同类之间都使用len()方法来获取该对象的长度。

Python 中有很多以双下划线 __ 开头和结尾的方法,通常被称为 魔法方法特殊方法,这些方法提供了对内建操作符或内建函数的自定义支持。除了 __len__ 以外,还有许多常用的魔法方法可以帮助我们定制类的行为。以下是一些常见的魔法方法:

1. __init__(self, ...)

  • 描述:类的构造函数,在类实例化时自动调用。
  • 用途:用于初始化对象的状态(如定义属性)。
  • 示例
    class MyClass:
        def __init__(self, value):
            self.value = value
    

2. __del__(self)

  • 描述:析构函数,在对象被销毁时自动调用(垃圾回收时)。
  • 用途:清理资源,如关闭文件或数据库连接。
  • 示例
    class MyClass:
        def __del__(self):
            print("Object is being destroyed")
    

3. __repr__(self)

  • 描述:返回对象的“官方”字符串表示,通常用于调试。
  • 用途:当我们调用 repr() 或者在交互式解释器中打印对象时,调用此方法。
  • 示例
    class MyClass:
        def __repr__(self):
            return f"MyClass(value={
           self.value})"
    

4. __str__(self)

  • 描述:返回对象的“非正式”字符串表示,通常用于 print() 函数中。
  • 用途:用于定义对象的友好字符串表示。
  • 示例
    class MyClass:
        def __str__(self):
            return f"MyClass with value {
           self.value}"
    

5. __add__(self, other)

  • 描述:实现加法运算符 (+)。
  • 用途:当对象参与加法操作时,调用此方法。
  • 示例
    class MyClass:
        def __init__(self, value):
            self.value 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值