视频教程下载链接:http://pan.baidu.com/s/1eR35hq6
配套教程下载:http://pan.baidu.com/s/1qYdI6q4
这节课,我们来讲解Init函数,那么什么是init()函数呢?你可以把它理解为C++或者Java中的构造函数,这个函数会在每次创建对象的时候自动调用,现在我们来创建一个类work,然后定义这个类的构造函数__init__,它的作用就是输出:“init函数被调用”
class work:
def __init__(self):
print("init函数被调用")
为了有一个直接的对比,我们再创建另一个函数oxox,它的功能就是输出:“oxox函数被调用”:
def oxox(self):
print("oxox函数被调用")
现在我们就来看看它们的区别,这里我们首先创建oxox类的对象www,因为只有通过对象才能访问到oxox类的成员函数,然后通过这个对象来调用oxox函数:
www = work()
www.oxox()
我们运行:
图 5‑4
你看,程序首先调用init函数,然后才调用oxox函数,但是这里的代码未曾调用过init函数啊?所以这就是init函数的特别之处了,在任何时候,我们创建一个对象,Python首先做的第一件事就是查找到这个对象的init函数,然后调用它,所以这里我们不需要显示的调用init函数。
现在你可能会觉得这挺有意思,但是init函数到底有什么软用?这里我们拿上节课所讲的Enemy类来举例,这里为敌人类创建一个init函数,它的第一个参数当然是self,这里我还想为它添加一个新的参数,因为我们知道敌人类有一个默认的生命值为3,但是现在我们想创建出一个生命值为5或者8的敌人,那么这个时候,就需要通过另一个参数x来传递生命值了,然后将新的生命值赋值给life:
class Enemy:
life = 3
def __init__(self, x)
self.life = x
所以非常简单,现在我们再来创建一个普通的函数get_life,它的功能是将当前的生命值打印出来:
def get_life(self):
print(self.life)
那么接下来,我们就来创建一个敌人对象oxox,然后通过init函数将生命值赋值为5,接着我们再来创建一个敌人的Boss,它的生命值为20:
oxox = Enemy(5)
boss = Enemy(20)
所以现在我们已经有了2个敌人对象,但是它们的生命值不同,所以现在我们可以将它们的生命值打印出来:
oxox.get_life()
boss.get_life()
运行:
图 5‑5
你看这里就分别将它们的生命值打印出来。你也可以下断点调试,看代码的走向。所以,你可以把init理解成C++中的构造函数,它在对象创建的时候会自动的调用。__init__()函数意义重大的原因有两个。第一个原因是在对象生命周期中初始化是最重要的一步;每个对象必须正确初始化后才能正常工作。第二个原因是__init__()参数值可以有多种形式。所以它能够提供更多丰富的功能,这就是关于Init函数的详细介绍。
更多精彩内容尽在视频中!
本文固定链接:http://www.oxox.work/web/?p=1559&preview=true | 虚幻大学查看原文:http://www.oxox.work/web/python/init/
转载请注明原文地址: https://ju.6miu.com/read-26135.html