Python: 类中为什么要定义__init__()方法
1 | 学习并转自:https: / / blog.csdn.net / geerniya / article / details / 77487941 <br> |
1. 不用init()方法定义类
定义一个矩形的类,目的是求周长和面积。
1 2 3 4 5 6 7 8 9 10 11 | 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 {} |
从上例中可以看到,我们在类中并没有定义init()方法,但是也能够得到类似的要求,结果返回了矩形实例rect的周长及面积。
但是,我们通过print(rect.dict)来看这个实例的属性,竟然是空的,我定义了一个矩形,按理来说它的属性应该是它的长、宽。但是它竟然没有。这就是没有定义init()的原因了。
并且,在实例化对象的时候,rect = Rectangle()参数为空,没有指定a、b的值,只有在调用函数的时候才指定了。且类中定义的每个方法的参数都有a、b,这显然浪费感情,在类中直接指定方法就可以了。、
因此吧,需要在类中定义init()方法,方便创建实例的时候,需要给实例绑定上属性,也方便类中的方法(函数)的定义。
2、用init()方法定义类
上述同样的例子,采用init()方法定义类,如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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__)out14 12 { 'a' : 3 , 'b' : 4 } |
定义完init()后,创建的每个实例都有自己的属性,也方便直接调用类中的函数。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架