组合、多态、封装

一.组合

1.1概念

指的是一个对象拥有一个属性,这个属性的值是另一个类的对象

class Foo:
    pass
class Bar:
    pass
obj=Foo()
obj.attr=Bar()

1.2作用

使用组合是为了通过为某一个类的属性添加另一个类的对象为值,从而起到关联/整合/组合两个类的作用,同时减少了代码冗余


二.多态

2.1多态

指的是同一类/种事物的不同形态

2.2多态性

在多态的前提下,可以在不考虑对象具体类型的前提下直接使用对象

2.3多态性精髓

统一

2.4总结

     多态中的父类具有规范其子类的作用,父类不需要实例化以及实现内部方法


三.封装

3.1概念

装:将名字存入容器/名称空间

封:将存入名称空间的名字隐藏起来,隐藏对外不对内

3.2封装方式

在需要封装的数据属性或函数属性名字前加__

3.3总结

1.用__封装只是语法意义上的变形(改变名称空间中名字),并不会真的限制外部访问调用

2.该语法变形只会发生在定义时检测语法阶段发生,之后新增的值并不会变形

3.如果父类不想被子类将自己的属性覆盖,可以将属性隐藏(应用)

3.4封装数据属性

将数据属性封装起来后,类外就无法直接修改类中属性,可以设置一个接口用来修改,在接口中可以设置任意逻辑条件来限制属性的修改   

3.5封装函数属性

 可以隔离复杂度


四.property

是用来将函数属性伪装成数据属性的装饰器

class People:
    @property
    def bmi(self):
    return bmi
obj=People()
print(obj.bmi)

五.绑定方法

绑定给谁就应该由谁来调用,谁来调用就会将谁当作第一个参数传入

5.1绑定给对象

类中函数属性默认绑定给对象

5.2绑定给类

为类中需要绑定给类的函数前调用装饰器classmethod

5.3无绑定

指一个函数同类与对象都不绑定,谁都可以调用这个普通函数,无自动传值,加装饰器staticmethod


六.反射

通过字符串来反射/映射/到对象/类的属性上

6.1查

hasattr:判断一个属性是否在对象/类中,返回值为True/False

getattr:查询一个属性是否在对象/类中.存在则取出对应值,否则报错,可设置取不到返回None

6.2增,改

setattr:改变原有属性值,或者增加新属性

6.3删

delattr:删除属性

6.4类与对象判断关系

isinstance:判断一个对象是否是另一个类调用产生

issubclass:判断两人类是否为父子关系(继承)


七.内置方法:

7.1自动打印

__str__函数:当对象被打印时会自动打印出函数预设信息

7.2回收

__del__:在对象被删除时先自动回收对象之外其他资源,例如系统资源

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值