• python的面向对象


    一、组合

    1、什么是组合?

    组合就是把对象的某个属性设置为另一个对象。

    2、为什么要使用组合?

    和继承一样,为了减少代码的冗余。

    3、如何使用组合

    class Teacher:
        def __init__(self,name,age,sex):
            self.name = name
            self.age = age
            self.sex = sex
    
    
    class Date:
        def __init__(self,year,month,day):
            self.year = year
            self.month = month
            self.day = day
    
        def Tell_biirthday(self):
            print(f'''
            === 出身日期 ===
            年:{self.year}
            月:{self.month}
            日:{self.day}
            ===============
            ''')
    
    
    teacher1 = Teacher('tbw',18,'boy')
    birthday = Date(1997,8,14)
    
    teacher1.birthday = birthday
    teacher1.birthday.Tell_biirthday()
    
    

    二、访问限制机制

    1、什么是访问限制机制?

    在类内部定义属性,凡是以__开头的属性与方法属性,都会被python内部自动隐藏起来,让外部不能直接“直接”访问类内部的__开头的属性。

    比如:

    __name = 'tbw'  # 不能直接调用 类名.__name 这个属性,但可以用类内部的接口访问
    

    2、为什么要有访问限制机制?

    限制了一些机密属性被外界直接调用的可能性,使隐私的属性与不能被外部轻易访问的属性,可以隐藏起来,不能被外部直接调用。

    (好处)对重要数据的获取的逻辑更加严谨,进而保证了数据的安全。

    3、如何利用访问限制机制?

    可以通过类内部的接口调用类内部的隐私数据(因为访问限制是针对外界调用类内部属性的一种措施,它并不禁止类内部的调用),可以在接口内进行一些逻辑判断,再把数据返回给调用者。

    注意:在python中不会强制限制属性的访问,类内部__开头的属性

    class ATM:
        # 1.插卡
        def __insert_card(self):
            print('插卡')
            pass
    
        # 2.输入密码
        def __input_pwd(self):
            print('密码验证')
            pass
    
        # 3.输入取款金额
        def __input_money(self):
            print('输入金额')
            pass
    
        # 4.开始吐钱
        def __get_money(self):
            print('执行吐钱')
            pass
    
        # 5.打印账单
        def __print_flow(self):
            print('打印账单')
            pass
    
        # 取钱直接接口
        def withdraw(self):
            self.__insert_card()
            self.__input_pwd()
            self.__input_money()
            self.__get_money()
            self.__print_flow()
            print('取款程序执行完毕!')
    
    
    atm = ATM()
    atm.withdraw()
    
    '''
    插卡
    密码验证
    输入金额
    执行吐钱
    打印账单
    取款程序执行完毕!
    '''
    

    三、抽象类(了解)

    1、什么是抽象类?

    abc模块 (abstract_class模块)

    2、使用抽象类的目的?

    强制子类必须遵循父类的一套标准。

    3、如何使用抽象类?

    import abc

    4、鸭子类型(了解)

    什么是鸭子类型?

    在不知道当前对象是何物的情况下,但是你长得像鸭子,那么你就是鸭子类型.

    在python中,不推荐使用抽象类强制限制子类的定义,但是推荐类都遵循鸭子类型.

    • 继承:
      • 耦合性太高,程序的扩展性太差
    • 鸭子类型:
      • 耦合度低,程序的可扩展性强
  • 相关阅读:
    java定时器
    存储过程
    set and get 使用方法
    getXxx setXxx入门理解
    oracle数据字典
    消息队列的两种模式
    Cookie/Session机制详解
    mysql千万级数据量根据索引优化查询速度
    window7下配置python2.7+tornado3.3开发环境
    priority queue优先队列初次使用
  • 原文地址:https://www.cnblogs.com/bowendown/p/12593700.html
Copyright © 2020-2023  润新知