• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
谢城
博客园    首页    新随笔    联系   管理    订阅  订阅

学习总结(二十五)

1.组合类

             指的是 一个类把另一个类的对象作为自己的属性 就称之为组合

             当你定义一个类 并且这个类拥有某种类型的属性时 就称之为组

class PC:
    def open_app(self,app_name):
        print("open %s" % app_name)

class OldBoyStudent:
    def __init__(self,PC,notebook):
        self.PC = PC
        self.notebook = notebook
    pass

pc = PC()
notebook = PC()


stu = OldBoyStudent(pc,notebook)

  

2.新式类与经典类

     class A:在py2中 A就是一个经典类,经典类不是object的子类 仅在py2中出现

     class A(object):object的子类 py3中都是新式类 ,先深度 直到有一个公共父类时,查找其他路线(基于C3算法)

 

3.接口

             接口是一套协议规范,具体表现:一堆只有方法声明而没有实现体的方法,而接口中全都是抽象方法,接口的出现是为了提高扩展性,抽象类是为类限制子类必须按照接口要求的来实现

 

4.鸭子类型

               说如果一个对象叫声像鸭子,走路像鸭子,长得像鸭子,那它就是鸭子,是python 推荐的方式,python不喜欢强行限制你

  实例

class PC():

    def conntent_device(self, usb_device):
        usb_device.open()
        usb_device.work()
        usb_device.close()

class Mouse:
    # 实现接口规定的所有功能
    def open(self):
        print("mouse opened")

    def work(self):
        print("mouse working...")

    def close(self):
        print("mouse closed")

mouse = Mouse()
pc = PC()

pc.conntent_device(mouse)




class KeyBoard:
    def open(self):
        print("KeyBoard opened")

    def work(self):
        print("KeyBoard working...")

    def close(self):
        print("KeyBoard closed")

key1 = KeyBoard()

# 如果key1的特征和行为都像USB设备 那就把它当做USB设备来使用
# 对于使用者而言可以不用关心这个对象是什么类,是如如何是实现,
pc.conntent_device(key1)

  

posted @ 2019-05-17 19:41  谢城  阅读(153)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3