打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
python学习——类中为什么要定义__init__()方法

python学习——类中为什么要定义__init__()方法

geerniya 2017-08-22 21:12:41 

 36244 
 收藏 188

分类专栏: python 文章标签: python

版权

学习Python的类,一直不太理解为什么一定要定义init()方法,现在简要谈一下自己的理解吧。

1、不用init()方法定义类
定义一个矩形的类,目的是求周长和面积。

class Rectangle():    def getPeri(self,a,b):        return (a + b)*2    def getArea(self,a,b):        return a*brect = Rectangle()print(rect.getPeri(3,4))print(rect.getArea(3,4))print(rect.__dict__)12345678910

得到结果:

1412{}123

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

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

2、用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.brect = Rectangle(3,4)print(rect.getPeri())print(rect.getArea())print(rect.__dict__)12345678910111213

得到结果:

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

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

上述两个程序的不同之处,还望像我一样的初学者细细体会。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
十、Python property()函数:定义属性
python的类和对象
面向对象: 理解python类的单继承与多继承
python飞机大战 游戏框架搭建
Cython 的扩展类
面向对象编程
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服