python 中面向对象的封装

面向对象_封装
面向对象的核心: 类和对象
    类:类型,数据类型 从对象中抽取出来的一个抽象概念
    定义某种类型的特征和行为操作
    对象:通过某个指定的类创建出来的具体属性和具体行为的实体
    一个类可以创建多个对象,多个对象可以属于一个类型
类操作语法:
class 类型名称(驼峰命名法):
    def__init___(self,name[属性参数列表]):
       self.name = name
    def 方法名称(self, 方法参数列表)

面向对象的封装:
    1.数据封装:将程序中需要的数据
    按照统一的格式封装在类型的内部,通过该类型的对象
    包装使用数据!
    2.行为封装[方法]
    3.属性封装(重点)
       对象的属性操作,必须通过方法操作
    通过方法限制属性的访问,提高属性的安全性
        通过项目的规范,规定了一个下划线开头的属性
        是属于对象的私有属性,不能在类型的外部调用

    通过语法限制,让属性私有化,不让外界直接访问
        python中规定的,两个下划线开头的属性是私有的
        语法上外界不能直接访问

总结封装:
        在python中,封装按照如下步骤进行操作
        (1) 定义类型,所有属性私有化[双下划线开头]
        (2) 每个属性提供set/get方法[赋值/取值]
            命名规范:赋值:set_属性名称(..)
                    取值:get_属性名称(..)
        (3) 在get/set方法中,提供限制条件!

封装高级操作
    尽管属性数据已经被封装,但是操作过程[通过方法操作属性]直接暴露给开发人员
    本来操作一个属性~就是一个变量的赋值取值;转变成方法操作之后,已经失去了属性的概念!
python提供了一种特殊的操作,可以完成将方法转换成属性访问的操作模式
@property添加获取属性的方法,方法的操作模式更改为变量操作模式

@方法.setter 添加设置属性的方法,方法的操作模式更改为变量操作模式
class User:
    ....
    @property
    def name(self):
        return self.__name

    @name.setter
    def name(self, name)
        self.__name = name
方法二次封装
class User:
    def __init__(self, name):
        self.__name = name

    def get_name(self):
        return self.__name

    def set_name(self, name):
        self.__name = name

    def del_name(self):
        del self.__name

    # 访问属性的中间变量,通过变量name可以间接操作属性__name
    name = property(get_name, set_name, del_name)

属性的扩展和限制
python中对象的属性可以通过对象进行自由扩展
但是自由扩展会导致代码的可读性和操作性的下降,所以通过
指定的限制条件规范扩展属性的定义,完成定义和扩展的平衡

class User:
    __slots__ = ["__name", "age", "gender"]

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值