Python魔法方法、属性和迭代器详解

0 下载量 129 浏览量 更新于2024-08-03 收藏 188KB PDF 举报
Python基础教程(第2版)第九章魔法方法、属性和迭代器 本节内容主要介绍了Python中的魔法方法、属性和迭代器。魔法方法是Python中的一种特殊方法,用于实现对象的初始化、析构、属性访问和迭代等功能。 一、新式类 在Python中,有两种类:新式类和旧式类。新式类是Python 2.2以后引入的,具有许多新的特性,如属性和super函数。新式类可以通过三种方式来实现: 1. 在文件的开始处赋值语句`__metaclass__=type`。 2. 直接或间接地子类化内建类object(或其他一些新式类)。 3. 在自己的类的作用域中对`__metaclass__`变量赋值。 在Python 3中,没有“旧式”的类,也不需要显式地子类化object或者将元类设置为type,所有的类都会隐式地成为object的子类。 二、构造方法 构造方法是Python中的一种特殊方法,用于初始化新创建对象的状态。构造方法的名称是`__init__`,它在对象被创建后立即被调用。例如: ``` class FooBar: def __init__(self): self.somevar = 42 f = FooBar() print(f.somevar) # 42 ``` 对应的,Python中还有一个析构方法`__del__`,它会在对象被垃圾回收之前被调用。由于该方法的调用时间是不可知的,因此要尽量避免使用。 三、方法重写 每个类都可能拥有一个或多个超类,当一个子类的对象调用某个方法(属性)但在子类中没有找到该方法时,会去它的超类中寻找。我们可以重写一些超类的方法来自定义继承的行为。例如: ``` class A: def hello(self): print("Hello, I'm A") class B(A): def hello(self): print("Hello, I'm B") a = A() b = B() a.hello() # Hello, I'm A b.hello() # Hello, I'm B ``` 构造方法也可以进行重写,但是相比于普通方法,它可能会遇到特别的问题。