封装

封装就是隐藏。

1:封装数据

将数据隐藏起来这不是目的。隐藏起来然后对外提供操作该数据的接口,然后我们可以在接口附加上对该数据操作的限制,以此完成对数据属性操作的严格控制。

class People:
    def __init__(self, name, age):
        self.__name = name
        self.__age = age

    def tell_info(self):
        print('name:<%s>, age:<%s>'% (self.__name, self.__age))

    def set_info(self, name, age):
        if not isinstance(name, str):
            print('输入的名字错误')
            return
        if not isinstance(age, int):
            print('输入的年龄错误')
            return
        self.__name = name
        self.__age = age


class Teacher(People):
    def __init__(self,name, age, lever):
        super().__init__(name, age)
        self.lever = lever

t1 = Teacher('zheng', 26, 10)

t1.tell_info()
t1.set_info('wang', 30)
t1.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()
原文地址:https://www.cnblogs.com/zhengyiqun1992/p/10279037.html