组合,多态,封装, @property

组合

什么是组合

​ - 对象的某一个属性是另一个类的对象

class A:
	def __init__(self,B)
    	self.B = B
class B:    
    pass

b = B()
a = A(B)

为什么使用组合

​ - 减少代码冗余

如何使用组合

多态

什么是多态

​ - 一类事物的多种形态

多态性

​ - 都有自己的特性,例如 🐖,🐕 都会叫,叫就是他们的多态

​ - 崇尚鸭子类型(只要走路像鸭子【对象中有某个绑定方法】,那你就是鸭子)

​ - 不考虑对象类型的情况下使用实例(也就是使用对象中的相同名字的方法)

- 好处

​ -- 增加了程序的灵活性

​ -- 增加了程序的可扩展性

封装

封装是什么意思

​ - 就是把东西包起来,别人用不了,外部访问不到,但是在python中这个包装数据的箱子是纸做的,通过一些方法,比如下面说到的@property、@property.setter、@property.deleter,就可以实现对私有变量的获取,修改,删除

@property

  • 将被装饰方法伪装成一个数据属性,在使用的时候可以不加括号直接使用
  • 注意的一点:被伪装的方法只能有self这一个参数
class A:
    def __init__(self, x, y):
        self.x = x
        self.y = y

    @property
    def size(self):
        return self.x * self.y


s = A(10,2)
print(s.size) # 区别就在于size加不加括号
  • @property的两个扩展应用 (装饰器)

    - 用于使用修改删除定义的私有变量

  • @property.setter
    @property.deleter

class A:
    def __init__(self):
        self.__x = 10
        self.__y = 20

    @property # 获取,不需要括号
    def size(self):
        return self.__x * self.__y

    @size.setter # 修改
    def size(self, t):
        self.__x -= t

    @size.deleter  # 删除
    def size(self):
        del self.__x


s = A()    # 定义s对象
print(s.size)   # 运行size,执行__x 乘 __y
s.size = 100 # 修改 __x 减去 100
print(s.size)
del s.size      # 删除__x
print(s.__dict__)
posted @ 2019-08-28 17:03  cheerxiong  阅读(208)  评论(0编辑  收藏  举报