活动地址:CSDN21天学习挑战赛
七、初始化方法(__init__
)
当使用 类名()创建对象时,会自动执行以下操作:
为对象在内存中分配空间——创建对象
为对象的属性 设置初始值——初始化方法(__init__
)
这个初始化方法,就是__init__方法,__init__方法是对象的内置方法。
__init__方法是专门用来定义一个类具有哪些属性的方法。
示例:
在Factory中增加__init__方法,验证该方法在创建对象时会被自动调用。
class Factory:
'''这是一个工厂类'''
def __init__(self):
print('这是一个初始化方法,创建对象时,会被自动调用!')
factory1=Factory()
#输出:
'''
这是一个初始化方法,创建对象时,会被自动调用!
'''
八、在初始化方法(__init__
)内部定义属性
在 __init__方法内部使用 self.属性名 =属性的初始值 就可以定义属性。
class Factory:
'''这是一个工厂类'''
def __init__(self):
print('这是一个初始化方法,创建对象时,会被自动调用!')
#self.属性名=属性的初始值
self.name='X工厂'
def jianyan(self):
print('这是工厂里面负责检验的。')
#使用类名()创建对象时,会自动调用初始化方法__init__
factory1=Factory()
factory1.jianyan()
print(factory1.name)
#输出:
'''
这是一个初始化方法,创建对象时,会被自动调用!
这是工厂里面负责检验的。
X工厂
'''
九、改造初始化方法(__init__
)——初始化的同时设置初始值
在开发过程中,如果希望在 创建对象的同时,就设置对象的属性,就可以对 __init__方法进行改造。
- 把希望设置的属性值,定义成 __init__方法的参数
- 在方法内部使用 self.属性 =形参 接收外部传递的参数
- 在创建对象时,使用 类名(属性1,属性2,……)
class Factory:
'''这是一个工厂类'''
def __init__(self,facroty_name):
print('这是一个初始化方法,创建对象时,会被自动调用!')
#self.属性名=属性的初始值
self.name=facroty_name
def jianyan(self):
print('这是工厂里面负责检验的。')
#使用类名()创建对象时,会自动调用初始化方法__init__
factory1=Factory('万向集团')
factory1.jianyan()
print(factory1.name)
#输出:
'''
这是一个初始化方法,创建对象时,会被自动调用!
这是工厂里面负责检验的。
万向集团
'''
十、__del__方法
当一个对象被从内存中销毁前,再自动调用 __del__方法
应用场景:
-
__init__方法改造初始化方法,可以让创建对象更加灵活
-
__del__方法如果希望在对象销毁前,再做一些事情,可以考虑一下这个方法
-
一个对象从调用 类名()创建,生命周期开始
-
一个对象的__del__方法一旦被调用,生命周期结束
-
在对象的生命周期内,可以访问对象属性,或者让对象调用方法
class Factory:
'''这是一个工厂类'''
def __init__(self,facroty_name):
#self.属性名=属性的初始值
self.name=facroty_name
print('{}。'.format(self.name))
def jianyan(self):
print('这是工厂里面负责检验的。')
def __del__(self):
print('{}工厂休假!'.format(self.name))
#使用类名()创建对象时,会自动调用初始化方法__init__
#factory1是一个全局变量
factory1=Factory('万向集团')
factory1.jianyan()
print(factory1.name)
#del关键字可以删除一个对象
del factory1
#输出:
'''
万向集团。
这是工厂里面负责检验的。
万向集团
万向集团工厂休假!
'''
十一、__str__方法
在Python中,使用 print(对象名),默认情况下会输出:这个变量 引用的对象 是由 哪一个类创建的对象,以及在内存中的地址(十六进制表示)。
class Factory:
'''这是一个工厂类'''
def jianyan(self):
print('这是工厂里面负责检验的。')
factory1=Factory()
print(factory1)
#输出:
'''
<__main__.Factory object at 0x00000235CE8053F0>
'''
如果在开发中使用print输出变量时,能够打印自定义内容,就可以利用 __str__这个内置方法。
注意:使用 __str__方法时必须是字符
class Factory:
'''这是一个工厂类'''
def jianyan(self):
print('这是工厂里面负责检验的。')
def __str__(self):
return '我是一个超级工厂!'
factory1=Factory()
print(factory1)
#输出:
'''
我是一个超级工厂!
'''
十二、封装
将属性和方法封装到一个抽象的类中,对象方法的细节都被封装在类的内部。
class Factory:
'''这是一个工厂类'''
def jianyan(self):
print('这是工厂里面负责检验的。')
def zuzhuang(self):
print('这是工厂里面负责组装的。')
def baozhuang(self):
print('这是工厂里面负责包装的。')
def chuhuo(self):
print('这是工厂里面负责出货的。')
factory1=Factory()
factory1.jianyan()
factory1.zuzhuang()
factory1.baozhuang()
factory1.chuhuo()
#下面是输出
'''
这是工厂里面负责检验的。
这是工厂里面负责组装的。
这是工厂里面负责包装的。
这是工厂里面负责出货的。
'''