先对比一下有无__init__的情况:
一、无__init__的例子1:
class Compute():
def getSum(self,a,b):
return a + b
def getSubtract(self,a,b):
return a - b
rect = Compute()
print(rect.getSum(1,2))
print(rect.getSubtract(1,2))
print(rect.__dict__) # 查看这个实例的属性
输出的结果为:
3
-1
{}
二、无__init__的例子2:
class Compute():
def setSum(self,a,b):
self.a = a
self.b = b
def getSum(self):
return self.a + self.b
def getSubtract(self):
return self.a - self.b
rect = Compute()
rect.setSum(1,2)
print(rect.getSum())
print(rect.getSubtract())
print(rect.__dict__) # 查看这个实例的属性
输出的结果为:
3
-1
{'a': 1, 'b': 2}
三、有__init__的例子:
# 定义完init()后,创建的每个实例都有自己的属性,也方便直接调用类中的函数
# __init__()方法又被称为构造器(constructor)
# 作用:方便自己对类的属性进行定义
class Compute():
def __init__(self,a,b):
self.a = a
self.b = b
def getSum(self):
return self.a + self.b
def getSubtract(self):
return self.a - self.b
rect = Compute(1,2)
print(rect.getSum())
print(rect.getSubtract())
print(rect.__dict__) # 查看这个实例的属性
输出结果为:
3
-1
{'a': 1, 'b': 2}
四、总结:
1.init()的作用是初始化实例后的对象rect;
2.不一定在所有场景中都是用__init__,如果只是普通的方法集合,例一也可以适用,但当遇到不想写太多次传参的情况,可以考虑使用__init__()方法;
3.在例三中,加入__init__()方法实现了例二的效果,写法更规范、更简洁;