Python常见的魔术方法和魔术属性

文章目录

  • 魔术方法
    • 1、 `__new__` 魔术方法
      • (1) 基本使用
      • (2) `__new__` 触发时机要快于 `__init__`
      • (3) `__new__`的参数要和`__init__`参数一一对应。参数个数一致就行
      • (4) `__new__`和`__init__`之间的注意点
    • 2、 单态模式 : 同一个类,无论实例化多少次,都有且只有一个对象
    • 3、 `__del__` 魔术方法(析构方法)
      • (1) 基本语法
      • (2) 模拟文件操作
    • 4、 `__str__` 魔术方法
    • 5、`__repr__` 魔术方法
    • 6、`__call__` 魔术方法
      • (1) 基本语法
      • (2) 利用`__call__`魔术方法做统一调用,把其他方法都放到`__call__` 方法里面一起调用
      • (3) 模拟整型强转操作
    • 7、`__bool__` 魔术方法
    • 8、`__add__` 魔术方法 (与之相关的`__radd__` 反向加法)
    • 9、`__len__` 魔术方法
  • 魔术属性
    • 1、 `__dict__` 获取对象或类的内部成员结构
    • 2、 `__doc__` 获取对象或类的内部文档
    • 3、 `__name__` 获取类名函数名
    • 4、 `__class__` 获取当前对象所属的类
    • 5、 `__bases__` 获取一个类直接继承的所有父类,返回元组

魔术方法

Python的魔术方法(也称为特殊方法)是对象的一些特殊方法,它们都是以双下划线开头并以双下划线结尾,例如__init__。

魔术方法所体现的设计思想是构成python风格的重要组成部分。

它们的目的是让对象能够响应内置的运算符或函数,比如len(),+运算符等。例如,当我们使用len(obj)函数调用对象obj的长度时,实际上会调用对象的__len__方法。

1、 __new__ 魔术方法

触发时机:实例化类生成对象的时候触发(触发时机在__init__之前)
功能:控制对象的创建过程
参数:至少一个cls接受当前的类,其他根据情况决定。cls是系统自动传递的。类名字随意
返回值:通常返回对象 或 None

创建对象时可以选择给或者不给

(1) 基本使用

class MyClass2():
    a 

你可能感兴趣的:(python轻松入门,基础语法到高阶实战教学,python,开发语言,魔术方法,魔术属性)