第1关:学习-Python面向对象之魔术方法
任务描述
本关任务:给定了一个类 Test,并在该类中重写了部分魔法方法,请通过实例化类或者访问属性等操作来调用这些魔法方法。
相关知识
本关介绍的是 Python 中常用的魔法方法,完成本关任务将使用其中几个魔法方法。
魔法方法
在 Pyhton 中,我们经常可以看到以双下滑线__包裹起来的方法,最常见的就是__init__,这些方法被称为魔法方法或者特殊方法,这些方法可以给 Python 的类提供特殊功能。我们主要介绍以下几个魔法方法:
init:构造方法,在实例对象创建完成后被调用的,然后设置对象属性的一些初始值。
new: 在实例创建之前被调用的。因为它的任务就是创建实例然后返回该实例,是个静态方法。
class TestClass:
def init(self):
print(“调用__init__”)
def new(cls, *args, **kwargs): # 比构造方法更早调用
print(“调用__new__”)
return object.new(cls) # 返回当前类的实例
t = TestClass()
执行结果:
调用__new__
调用__init__
new__决定是否要使用当前的__init__方法,因为__new__可以调用其他类的构造方法或者直接返回别的实例对象来作为本类的实例,如果__new__没有返回实例对象,则__in