zoukankan      html  css  js  c++  java
  • python学习之封装

    封装(内部直接访问,外部无法访问到)
    封装是啥,抛开面向对象,你单去想什么是装,装就是拿来一个麻袋,把小猫,小狗,一起装进麻袋,(属性字典__dict__)
    什么是封,封就是把麻袋封上口子。

    在面向对象中这个麻袋就是你的类或者对象,类或者对象这两麻袋内部装了数据属性和函数属性,那么对于类
    和对象来说,“封”的概念从何而来,其实封的概念代表隐藏

    第一个层面的封装:类就是麻袋,这本身就是一种封装
    第二个层面的封装:类中定义私有的,只在类的内部使用,外部无法访问 '_','__'

    class People:
    __star='earth111111111111'
    __star1='earth111111111111'
    __star2='earth111111111111'
    __star3='earth111111111111'
    def __init__(self,id,name,age,salary):
    print('----->',self.__star)
    self.id=id
    self.name=name
    self.age=age
    self.salary=salary

    def get_id(self):
    print('我是私有方法啊,我找到的id是[%s]' %self.id)

    #访问函数
    def get_star(self):
    print(self.__star)

    p1=People('123123123123','alex','18',100000000)
    # print(p1.__star)
    print(People.__dict__)
    # print(p1.__star)
    print(p1._People__star)
    #
    # p1.get_star()
    p1.get_star()

    第三个层面的封装:明确区分内外,内部的实现逻辑,外部无法知晓,并且为封装到内部的逻辑提供一个访问
    接口给外部使用

    python不依赖语言特性去实现第二层面的封装,而是通过遵循一定的数据属性和函数属性的命名约定来达到封的效果

    约定一:任何以单下划线开头的名字都应该是内部的,私有的

    约定二:双下划线开头的名字`

  • 相关阅读:
    java generic type
    android avoiding-memory-leaks
    a various of context
    LruCache
    Java Reference
    SQL join
    Eclipse java中一个工程引用另一个工程的类
    java 匿名内部类的方法参数需要final吗?
    java的final
    如何将每一条记录放入到对应的范围中
  • 原文地址:https://www.cnblogs.com/jinpingzhao/p/12745828.html
Copyright © 2011-2022 走看看