• 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改成不同的变量名

  • 相关阅读:
    JDE函数--获取当前登录人的描述
    JDE报表开发笔记(R5537011 收货校验统计表)
    JDE函数--GetUDC(B函数)
    JDE隐藏Constant等(Hide Object)
    Oracle “dba_tables”介绍
    word2013设置页面边框
    makefile--#的不正确使用
    CICS定时
    程序的命名
    UE上传到FTP,会多出些字符
  • 原文地址:https://www.cnblogs.com/wbf980728/p/14074839.html
Copyright © 2020-2023  润新知