码迷,mamicode.com
首页 > 其他好文 > 详细

类的封装

时间:2019-11-28 01:04:34      阅读:69      评论:0      收藏:0      [点我收藏+]

标签:介绍   inpu   money   实例   对象   car   mon   get   inf   

1.封装介绍

封装:将属性和方法,封装到对象中
装:是往容器/名称空间里存放名字
封:代表将存放于名称空间中的名字给藏起来,这种隐藏对外不对内
为什么要封装:  封装数据属性,封装函数属性,
        1. __开头的属性实现的隐藏仅仅只是一种语法意义上的变形,并不会真的限制类外部的访问
        2. 该变形操作只在类定义阶段检测语法时发生一次,类定义阶段之后新增的__开头的属性并不会变形
        3. 如果父类不想让子类覆盖自己的属性,可以在属性前加__开头
class Foo:
    __x=111 # _Foo__x   可以通过 (类名/实例)._类名__属性名 的方式在外部访问 
    __y=222 # _Foo__y

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

    def __func(self): #_Foo__func  
        print(func)

    def get_info(self):
        print(self.__name,self.__age,self.__x)
print(Foo.__x)  报错 
print(Foo._Foo__x) 111 类外部访问私有属性的方法

2.如何实现私有属性,方法的对外不对内       外部不可以直接访问私有属性或方法,但是可以间接使用

class Foo:
    def _f1(self):
        print(foo.. f1)
    def f2(self):
        print(foo.. f2)
        self._f1()   #    对外隐藏对内不隐藏  外部调用f1会间接访问f2

3. 封装函数属性:隔离复杂度  内部方法无法确定顺序,直接隐藏不对外开放隔离复杂度   秒懂封装

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()

 

 

类的封装

标签:介绍   inpu   money   实例   对象   car   mon   get   inf   

原文地址:https://www.cnblogs.com/bigbox/p/11946579.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!