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装饰器

 

多态与多态性

 

posted @ 2018-10-24 20:59  葛洪  阅读(85)  评论(0编辑  收藏  举报