zoukankan      html  css  js  c++  java
  • python之访问限制

    在Class内部,可以有属性和方法,而外部代码可以通过直接调用实例变量的方法来操作数据,这样,就隐藏了内部的复杂逻辑。

    从Student类的定义来看,外部代码还是可以自由地修改一个实例的namescore属性

    # class Student(object):
    #     def __init__(self,name,score,ww):
    #         self.name=name
    #         self.score=score
    #         self.ww=ww
    #     def prins(self):
    #         print('%s:%s:%s'%(self.name,self.score,self.ww))
    # bart=Student('wang',99,'yiban')  #输入实例
    # bart.name='zhang'#将实例中的wang改为zhang
    # bart.prins()

    如果要让内部属性不被外部访问,可以把属性的名称前加上两个下划线__,在Python中,实例的变量名如果以__开头,就变成了一个私有变量(private),只有内部可以访问,外部不能访问

    # class Student(object):
    #     def __init__(self,name,score,ww):
    #         self.__name=name
    #         self.__score=score
    #         self.__ww=ww
    #     def prins(self):
    #         print('%s:%s:%s'%(self.__name,self.__score,self.__ww))
    # bart=Student('wang',99,'yiban')
    # bart.__name='zhang'  #虽然可以运行但不是self.__name=name
     # bart.prins()

     如果要修改实例的内容可以在类中写一个方法

    # class Student(object):
    #     def __init__(self,name,score,ww):
    #         self.__name=name
    #         self.__score=score
    #         self.__ww=ww
    #     def prins(self):
    #         print('%s:%s:%s'%(self.__name,self.__score,self.__ww))
    #     def cc(self,gg):
    #         self.__name=gg
    # bart=Student('wang',99,'yiban')
    # bart.cc('zhang')
    # bart.prins()

     _name是因为Python解释器对外把__name变量改成了_Student__name,所以,仍然可以通过_Student__name来访问__name变量。

    但是强烈建议你不要这么干,因为不同版本的Python解释器可能会把__name改成不同的变量名

  • 相关阅读:
    html页面模板布局内容的继承,block
    url分发
    显示年月,注册页面和后台数据交互,不涉及数据库
    static文件夹中文件引用方式,如html页面引用js
    pycharm写django之返回一个页面
    pycharm编写django第一步
    VUE清除keepalive页面缓存
    js设置html根节点的style字体【Vue动态调整全局字体大小】
    npm 依赖重新安装或更新版本
    antd 自定义表头slots.title不生效
  • 原文地址:https://www.cnblogs.com/wbf980728/p/14074839.html
Copyright © 2011-2022 走看看