python init文件 all_Python __init__ 用法

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

一、不用__init__方法也是可以的。

比如,定义一个矩形的类,目的是求周长和面积。

class Rectangle():

def getPeri(self,a,b):

return (a + b)*2

def getArea(self,a,b):

return a*b

rect = Rectangle()

print(rect.getPeri(3,4))

print(rect.getArea(3,4))

print(rect.__dict__)

得到结果:

14

12

{}

但是,我们通过print(rect.dict)来看这个实例的属性,竟然是空的,我定义了一个矩形,按理来说它的属性应该是它的长、宽。但是它竟然没有。这就是没有定义init()的原因了。

并且,在实例化对象的时候,rect = Rectangle()参数为空,没有指定a、b的值,只有在调用函数的时候才指定了。且类中定义的每个方法的参数都有a、b,这显然浪费感情,在类中直接指定方法就可以了。

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

二、用__init__方法定义类

class Rectangle():

def __init__(self,a,b):

self.a = a

self.b = b

def getPeri(self):

return (self.a + self.b)*2

def getArea(self):

return self.a * self.b

rect = Rectangle(3,4)

print(rect.getPeri())

print(rect.getArea())

print(rect.__dict__)

得到结果:

14

12

{'a': 3, 'b': 4}

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

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

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

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

class Song():

def __init__(self,lyrics):

self.lyric = lyrics

def sing_me_a_song(self):

for line in self.lyric:

print line

happy_baby = Song(['happy birthday to you',

'I do not want to get sued',

'So i will stop right there'])

bulls_on_parade = Song(['They rally around the family',

'with pockets full of shells'])

happy_baby.sing_me_a_song()

bulls_on_parade.sing_me_a_song()

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

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

三、文件夹中的__init__.py

比如,我们的foo/文件夹下面有许多的文件fooFactory.py, shortfoos.py, tallFoos.py,

通过在__init__.py中写代码,

__all__ = ['foofactories', 'tallFoos', 'shortfoos', 'medumfoos',

'santaslittlehelperfoo', 'superawsomefoo', 'anotherfoo']

# deprecated to keep older scripts who import this from breaking

from foo.foofactories import fooFactory

from foo.tallfoos import tallFoo

from foo.shortfoos import shortFoo

则可以在别的脚本里简单方便的写:

from foo import fooFactory, tallFoo, shortFoo

简化了在其他地方的导入。

https://blog.csdn.net/djangor/article/details/39673659

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值