zoukankan      html  css  js  c++  java
  • python 面向对象编程的三大特征之一 封装

    封装是面向对象编程的三大特征之一。

    封装:

    1. 将数据(属性)和行为(方法)包装到类对象中。在方法内部对属性进行操作,在类对象的外部调用方法。
      这样就可以无需关心方法内部的具体实现细节,从而隔离了复杂度。

    2. 像上一节 静态方法 中,类对象外部访问不了一些类对象内部的一些方法或者属性,
      需要调用的话可以在类内部再提供一个方法(接口)用来访问那些隐藏的信息。

    这样就可以实现对隐藏数据的保护。

    class Student(object):
        def __init__(self):
            self.__score = 99  # __score 属性值只能在类对象内部访问
    
        def get_score(self):
            return self.__score
    
        def set_score(self, score):
            if 0 <= score <= 100:
                self.__score = score
            else:
                raise ValueError("成绩须在1-100之间!")
    
    
    mc = Student()
    mc.set_score(66)
    print(mc.get_score())  # 66
    
    mc.set_score(101)  # ValueError: 成绩须在1-100之间!
    

    get_score()和set_score()方法是对外公开的,所以类对象外部可以通过get_score()和set_score()
    方法来访问静态属性值 __score。


    使用封装能隐藏对象实现细节,使代码更易维护,
    同时因为不能直接调用、修改对象内部的私有信息,在一定程度上保证了系统安全性。


    # ATM 取款机的步骤:插入银行卡 - 输入密码 - 验证账号 - 输入金额取款 - 验证授权 - 出钞
    
    class Money(object):
        def __card(self):
            print("插入银行卡!")
    
        def __password(self):
            print("输入密码!")
    
        def __verify(self):
            print("验证账号!")
    
        def __input(self):
            print("输入金额!")
    
        def __cash(self):
            print("出钞!")
    
        # 定义一个可以类对象外部可以访问的方法(接口) withdraw
        def withdraw(self):
            self.__card()
            self.__password()
            self.__verify()
            self.__input()
            self.__cash()
    
    # 实例化
    m = Money()
    m.withdraw()
    
    """
    插入银行卡!
    输入密码!
    验证账号!
    输入金额!
    出钞!
    """
    
    
  • 相关阅读:
    Sublime Text配置Python开发利器
    Python字符进度条
    安装和使用的django的debug_toolbar
    Python数组合并
    django创建项目
    Python的闭包
    Python获取对象的元数据
    Python的枚举类型
    Django的Model上都有些什么
    Git使用相关
  • 原文地址:https://www.cnblogs.com/wwho/p/15626193.html
Copyright © 2011-2022 走看看