zoukankan      html  css  js  c++  java
  • 10.24

    组合

      什么是组合?

    一个对象的属性是来自另外一个类的对象,称之为组合

      为什么要的组合?

    组合也是用来解决类与类之间代码冗余

      怎么用?

    class Foo:
        a=111
        def __init__(self,x,y):
            self.x=x
            self.y=y
        def func1(self):
            print('Foo内的功能')
    class Bar:
        b=222
        def __init__(self,m,n):
            self.m=m
            self.n=n
        def func2(self):
            print('Bar中的功能')
    obj1=Foo(10,20)
    obj2=Bar(30,40)
    obj1.xxx=obj2
    
    print(obj1.x,obj1.y,obj1.a,obj1.func1)
    print(obj1.xxx.m,obj1.xxx.n,obj1.xxx.b,obj1.xxx.func2)

    封装

      什么是封装?

    装是指把属性装进一个容器,封是指隐藏但是这种隐藏是对外部对内的

      为什么要封装?

    封装不是单纯意义的隐藏

    封装数据属性的目的:将数据属性封装起来,类外部的使用就无法直接操作该数据属性了

    需要类内部打开一个借口给试用装,类的设计者可以在接口之上附近任意逻辑,从而严格控制试用装对属性的操作

      封装的目的?

    隔离复杂度

      怎么要封装?

    只要在属性前加上__开头,该属性就会被隐藏起来

    该隐藏有以下几个特点:

    1.只是一种语法意义上的变形,即__开头的属性汇总检测语法时发生变形(_类名__属性名)

    2.这种隐藏是对外不对内的,因为在类内部检测语法时所有的代码都统一发生了变形

    3.这种变形只是在语法检测阶段时发生一次,在类定义之后新增的__开头的属性并不会发生变形

    4.如果父类不想让子类覆盖自己的属性,可以在属性前加__开头

     property装饰器

    多态与多态性

  • 相关阅读:
    newifi3-D2 openwrt挂载u盘扩容/overlay
    # mac使用homebrew安装jdk和tomcat
    React学习小记--setState的同步与异步
    [vscode直接运行js文件报错]: To load an ES module, set "type": "module" in the package.json or use the .mjs extension.
    # js权威指南之对象篇
    # 初体验之腾讯位置服务彩云天气开发者api
    自用资源合集(持续更新)
    网页嵌入播客
    网页嵌入音乐歌单
    All live
  • 原文地址:https://www.cnblogs.com/zhanggq/p/9846117.html
Copyright © 2011-2022 走看看