• Python面向对象(二)



    活动地址:CSDN21天学习挑战赛

    七、初始化方法(__init__

    当使用 类名()创建对象时,会自动执行以下操作:

    为对象在内存中分配空间——创建对象
    为对象的属性 设置初始值——初始化方法(__init__
    这个初始化方法,就是__init__方法,__init__方法是对象的内置方法。

    __init__方法是专门用来定义一个类具有哪些属性的方法。

    示例:
    在Factory中增加__init__方法,验证该方法在创建对象时会被自动调用。

    class Factory:
        '''这是一个工厂类'''
        
        def __init__(self):
            print('这是一个初始化方法,创建对象时,会被自动调用!')
     
    factory1=Factory()
    #输出:
    '''
    这是一个初始化方法,创建对象时,会被自动调用!
    '''
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    八、在初始化方法(__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工厂
    '''
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    九、改造初始化方法(__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)
    #输出:
    '''
    这是一个初始化方法,创建对象时,会被自动调用!
    这是工厂里面负责检验的。
    万向集团
    '''
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    十、__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
     
     
    #输出:
    '''
    万向集团。
    这是工厂里面负责检验的。
    万向集团
    万向集团工厂休假!
    '''
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31

    十一、__str__方法

    在Python中,使用 print(对象名),默认情况下会输出:这个变量 引用的对象 是由 哪一个类创建的对象,以及在内存中的地址(十六进制表示)。

    class Factory:
        '''这是一个工厂类'''
     
        def jianyan(self):
            print('这是工厂里面负责检验的。')
     
    factory1=Factory()
    print(factory1)
     
    #输出:
    '''
    <__main__.Factory object at 0x00000235CE8053F0>
    '''
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    如果在开发中使用print输出变量时,能够打印自定义内容,就可以利用 __str__这个内置方法。

    注意:使用 __str__方法时必须是字符

    class Factory:
        '''这是一个工厂类'''
     
        def jianyan(self):
            print('这是工厂里面负责检验的。')
     
        def __str__(self):
            return '我是一个超级工厂!'
     
    factory1=Factory()
    print(factory1)
     
    #输出:
    '''
    我是一个超级工厂!
    '''
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    十二、封装

    将属性和方法封装到一个抽象的类中,对象方法的细节都被封装在类的内部。

    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()
     
    #下面是输出
    '''
    这是工厂里面负责检验的。
    这是工厂里面负责组装的。
    这是工厂里面负责包装的。
    这是工厂里面负责出货的。
    '''
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
  • 相关阅读:
    Jetpack Compose学习(9)——Compose中的列表控件(LazyRow和LazyColumn)
    零基础学Python:Numpy用法
    01_深度学习基础知识
    Linux、docker、kubernetes、MySql、Shell运维快餐
    9.6 并查集
    java获取全国省市区信息
    Android学习笔记 75. 单元测试
    Ubuntu系统下MySQL开启远程连接
    聊聊常见的IO模型 BIO/NIO/AIO 、DIO、多路复用等IO模型
    省创暨srdp项目复盘
  • 原文地址:https://blog.csdn.net/Limenrence/article/details/126454726