3-从函数到方法(2)1

preview
需积分: 0 0 下载量 39 浏览量 更新于2022-08-03 收藏 159KB PDF 举报
在Python编程语言中,函数和方法是两种不同的概念。函数是一段可重用的代码块,而方法则是关联到特定对象(通常是类的实例)的函数。本篇将详细讲解从函数转换为方法的过程中涉及的一些核心知识点,以及Python中的一些特殊方法(也称为魔术方法)。 1. **基本的方法**: - 方法是类的一部分,它们定义了对象的行为。通过在函数定义前添加`def`关键字和`self`参数,将其转变为类的方法。例如: ```python class MyClass: def my_method(self): print("This is a method.") ``` 2. **算数运算符**: Python提供了用于算术操作的内建运算符,如`+`、`-`、`*`等。为了自定义这些运算符的行为,可以重载对应的魔术方法,例如`__add__`, `__sub__`, 和 `__mul__`。 3. **反算术运算符**: 对于不支持某个运算的类型,Python会尝试使用反运算符方法,如`__radd__`、`__rsub__`等。这些方法在左操作数不支持运算时被调用。 4. **增量赋值运算符**: 增量赋值运算符如`+=`、`-=`等可以通过重载`__iadd__`、`__isub__`等魔术方法来实现。这些方法在进行原地修改对象时使用。 5. **一元运算符**: 包括`+`(正)、`-`(负)、`~`(按位取反)。对应的魔术方法有`__pos__`、`__neg__`、`__invert__`。 6. **属性访问**: 属性是类中定义的变量,可以通过`.`操作符访问。默认情况下,Python允许直接访问属性,但也可以通过`__get__`和`__set__`等魔术方法来控制访问行为。 7. **描述符**: 描述符是实现了`__get__`, `__set__`, `__delete__`方法的类,用于控制对象属性的获取、设置和删除行为。它是Python实现属性访问控制的一种机制。 8. **特殊方法(魔术方法)**: 特殊方法是Python中以双下划线`__`开头和结尾的命名约定,它们在特定上下文中自动调用。例如: - `__init__`: 构造器,用于初始化新创建的实例。当创建一个新的对象时,`__new__`先被调用,然后是`__init__`。 - `__new__`: 是实例化过程的第一步,它返回一个实例,这个实例会被`__init__`接收并进一步初始化。`__new__`通常用于创建不可变类型的子类。 - `__del__`: 析构器,在对象被回收之前调用,用于清理资源。 - `__str__`: 当打印对象或使用`%s`格式化字符串时被调用,返回对象的可读字符串表示。 - `__repr__`: 当需要对象的表达式字符串时调用,通常用于调试。如果没有实现`__str__`,Python会调用`__repr__`。 9. **类型工厂函数**: 类型工厂函数是一种创建对象的方式,不通过类实例化,而是通过函数实现,如`tuple()`、`list()`等。 10. **算术运算符的魔术方法**: Python提供了多个用于自定义算术运算符行为的魔术方法,如: - `__add__`, `__radd__`: 定义加法 (`+`) 行为。 - `__sub__`, `__rsub__`: 定义减法 (`-`) 行为。 - `__mul__`, `__rmul__`: 定义乘法 (`*`) 行为。 - `__truediv__`, `__rtruediv__`: 定义真除法 (`/`) 行为。 - `__floordiv__`, `__rfloordiv__`: 定义整数除法 (`//`) 行为。 - `__mod__`, `__rmod__`: 定义取模 (`%`) 行为。 - `__pow__`, `__rpow__`: 定义幂运算 (`**`) 行为。 - `__divmod__`, `__rdivmod__`: 定义`divmod()`操作的行为。 - `__lshift__`, `__rlshift__`: 定义左移位 (`<<`) 行为。 - `__rshift__`, `__rrshift__`: 定义右移位 (`>>`) 行为。 - `__and__`, `__rand__`: 定义按位与 (`&`) 行为。 - `__xor__`, `__rxor__`: 定义按位异或 (`^`) 行为。 - `__or__`, `__ror__`: 定义按位或 (`|`) 行为。 11. **赋值运算符的魔术方法**: 与增量赋值运算符对应的魔术方法如`__iadd__`, `__isub__`, `__imul__`等,它们定义了在对象上进行原地修改的操作。 以上是Python中从函数到方法转换的关键知识点,以及关于特殊方法(魔术方法)的详细解释。通过理解和掌握这些概念,可以更深入地理解Python对象模型,并能够自定义类的行为,以满足特定的需求。