Python 封装

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 封装相关的知识,希望对你有一定的参考价值。

定义:

  封装不仅仅是隐藏属性和方法是具体明确区分内外,使得类实现者可以修改封装内的东西而不影响外部调用者的代码;而外部使用用者只知道一个接口(函数),只要接口(函数)名、参数不变,使用者的代码永远无需改变。这就提供一个良好的合作基础——或者说,只要接口这个基础约定不变,则代码改变不足为虑。

  封装可分为封装属性与封装函数

实例:

#1:封装数据属性:将属性隐藏起来,然后对外提供访问属性的接口,关键是我们在接口内定制一些控制逻辑从而严格控制使用对数据属性的使用
class People:
    def __init__(self,name,age):
        if not isinstance(name,str):
            raise TypeError(%s must be str %name)
        if not isinstance(age,int):
            raise TypeError(%s must be int %age)
        self.__Name=name
        self.__Age=age
    def tell_info(self):
        print(<名字:%s 年龄:%s> %(self.__Name,self.__Age))

    def set_info(self,x,y):
        if not isinstance(x,str):
            raise TypeError(%s must be str %x)
        if not isinstance(y,int):
            raise TypeError(%s must be int %y)
        self.__Name=x
        self.__Age=y

p=People(egon,18)
p.tell_info()

p.set_info(Egon,19)
p.set_info(Egon,19)
p.tell_info()



#2:封装函数属性:为了隔离复杂度

#取款是功能,而这个功能有很多功能组成:插卡、密码认证、输入金额、打印账单、取钱
#对使用者来说,只需要知道取款这个功能即可,其余功能我们都可以隐藏起来,很明显这么做
#隔离了复杂度,同时也提升了安全性

class ATM:
    def __card(self):
        print(插卡)
    def __auth(self):
        print(用户认证)
    def __input(self):
        print(输入取款金额)
    def __print_bill(self):
        print(打印账单)
    def __take_money(self):
        print(取款)

    def withdraw(self):
        self.__card()
        self.__auth()
        self.__input()
        self.__print_bill()
        self.__take_money()

a=ATM()
a.withdraw()

 

以上是关于Python 封装的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段14——Vue的axios网络请求封装

python之路之前没搞明白4面向对象(封装)

回归 | js实用代码片段的封装与总结(持续更新中...)

VsCode 代码片段-提升研发效率

常用Javascript代码片段集锦

常用python日期日志获取内容循环的代码片段