最新消息:XAMPP默认安装之后是很不安全的,我们只需要点击左方菜单的 "安全"选项,按照向导操作即可完成安全设置。

Python __init__ 用法

XAMPP教程 中文小张 1453浏览 0评论

学习Python的过程中,__init__ 的用法是一个难点,即使许多Python的书籍上,关于Python __init__ 用法也是写得十分拗口、难懂,今天终于找到一个关于Python __init__ 用法说明,我觉得说得很透彻,分享给大家。

一、不用__init__方法也是可以的。
比如,定义一个矩形的类,目的是求周长和面积。

1 class Rectangle():
2     def getPeri(self,a,b):
3         return (a + b)*2
4     def getArea(self,a,b):
5         return a*b
6
7 rect = Rectangle()
8 print(rect.getPeri(3,4))
9 print(rect.getArea(3,4))
10 print(rect.__dict__)

得到结果:

1 14
2 12
3 {}

但是,我们通过print(rect.dict)来看这个实例的属性,竟然是空的,我定义了一个矩形,按理来说它的属性应该是它的长、宽。但是它竟然没有。这就是没有定义init()的原因了。
并且,在实例化对象的时候,rect = Rectangle()参数为空,没有指定a、b的值,只有在调用函数的时候才指定了。且类中定义的每个方法的参数都有a、b,这显然浪费感情,在类中直接指定方法就可以了。

因此需要在类中定义init()方法,方便创建实例的时候,需要给实例绑定上属性,也方便类中的方法(函数)的定义。

二、用__init__方法定义类

1 class Rectangle():
2     def __init__(self,a,b):
3         self.a = a
4         self.b = b
5     def getPeri(self):
6         return (self.a + self.b)*2
7     def getArea(self):
8         return self.a * self.b
9
10 rect = Rectangle(3,4)
11 print(rect.getPeri())
12 print(rect.getArea())
13 print(rect.__dict__)

得到结果:

1 14
2 12
3 {'a': 3, 'b': 4}

定义完__init__后,创建的每个实例都有自己的属性,也方便直接调用类中的函数。

以下是以前自己写的版本:

__init__ 的意思是:initialize,初始化,因此可以理解实例化出某个类的对象时调用的初始化方法。

1、它位于类内部,可以让你在里面先做一些初始化工作,例如定义一些变量供后面的其它方法使用。

1 class Song():
2     def __init__(self,lyrics):
3         self.lyric = lyrics
4
5
6     def sing_me_a_song(self):
7         for line in self.lyric:
8             print line
9
10 happy_baby = Song(['happy birthday to you',
11                    'I do not want to get sued',
12                    'So i will stop right there'])
13
14 bulls_on_parade = Song(['They rally around the family',
15                         'with pockets full of shells'])
16
17 happy_baby.sing_me_a_song()
18 bulls_on_parade.sing_me_a_song()

2、定义类的时候,若是添加__init__方法,那么在创建类的实例的时候,实例会自动调用这个方法,一般用来对实例的属性进行初使化。比如:
Snap18120

只要其所在的类被实例化了,这个(特殊)方法就会被执行。 相对的,我们都知道,类里面的方法,如果没有被调用到,它是不会被执行到的,而这个(特殊)方法却不需要明确调用即可被执行。

Snap18121

 

转载请注明:XAMPP中文组官网 » Python __init__ 用法

您必须 登录 才能发表评论!