python学习——类中为什么要定义__init__()方法
来源:互联网 发布:惠普q1910更新软件 编辑:程序博客网 时间:2024/06/09 14:24
学习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__)
得到结果:
1412{}
从上例中可以看到,我们在类中并没有定义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__)
得到结果:
1412{'a': 3, 'b': 4}
定义完init()后,创建的每个实例都有自己的属性,也方便直接调用类中的函数。
上述两个程序的不同之处,还望像我一样的初学者细细体会。
阅读全文
0 0
- python学习——类中为什么要定义__init__()方法
- Python中__init__方法介绍
- Python中__init__方法介绍
- Python中__init__方法介绍
- Python中__init__方法使用
- Python中__init__方法使用
- python中__init__,__call__学习
- Python中__init__的方法解惑
- Python中__init__方法注意点
- Python中__init__方法注意点
- Python中__init__方法注意点
- Python中__init__方法注意点
- Python中__init__方法注意点
- Python中__init__方法注意点
- Python中__init__方法注意点
- Python : 定义一个应用程序的初始化方法 __init__()
- Python---类的"__new__"和"__init__"方法
- python重载父类的__init__方法
- Go 程序的性能优化及 pprof 的使用
- MySQL 数据库常用命令小结
- MemoryPool —— 简单高效的内存池 allocator 实现
- Idea使用总结
- vim 显示行号 自动缩进 语法高亮等设置
- python学习——类中为什么要定义__init__()方法
- Android 异常处理:java.lang.IllegalArgumentException(...contains a path separator)
- 第二十三天总结
- jdbc java数据库的连接 (oracle数据库)
- Item2+zsh及相关辅助工具的安装及配置
- 反向传播算法- softmax
- python图像操作
- HDU 6168 Numbers
- Ajax实现五级联动--(一)