0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

python的类访问控制

马哥Linux运维 来源:lq 2018-12-10 16:39 次阅读

python类中,有属性和方法,外部代码可以直接通过实例来访问修改。

如果需要让内部的属性不被外部访问到,在属性变量前面加上__2个下划线。

在python中,实例的变量名如果是由__2个下花钱开头的,就代表这是一个私有变量:只有内部可以访问,外部不许直接通过类或者实例访问。

代码:

虽然说外部访问不了一个内部私有属性,但是可以通过类中方法间接的访问、修改

类内部方法getname和setname:

双下划线开头的私有属性,是不是一定不能从外部访问呢?

其实不是的:

python中2个有趣的现象,外部变量遮蔽类中的变量。

从实例中访问类属性必须要谨慎。

和通常python变量一样,任何对实例属性的赋值都会创建一个实例属性(如果实例属性不存在的话),并且对其赋值。

但是,如果类属性中存在同名的属性,就是产生前面所说的有趣的副作用。

python3.x依旧存在这个情况。

下面上代码:

为什么下面的dict类型的就会del报错呢??

原因在于:python是由c写成的cpython。

c语言中,并没有字符串这个概念:c中叫做字符数组,存储在内存中,是一块连续的空间,不可修改,任何修改字符数组的行为,都会在不影响原始的字符数组下,创建产生一个新的字符数组。

而dict就不一样了,它在内存中存储,是一系列非连续的内存空间,可以在原来的基础上修改,所以,第二个例子中del f.x就会报错。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • C语言
    +关注

    关注

    180

    文章

    7604

    浏览量

    136790
  • python
    +关注

    关注

    56

    文章

    4796

    浏览量

    84668

原文标题:python的类访问控制

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何使用Python? 优势有哪些?

    pupil.print_score () 语句,调用实例的方法就是调用的方法,而这个方法是按照格式打印出  pupil.name:pupil.score,mlilei: 99。  Python优势有哪些?  1.
    发表于 07-30 18:08

    python的理解与使用

    新式的写法,与之对应的是 Python 2 的经典写法。3. 如何实例化?定义了之后,就可以通过下边的写法实例化它,并访问属性,调用方
    发表于 03-07 16:51

    python的多态和的property属性

    python的多态多态,是指在同一型下的不同形态。比如下面这段代码class People: def speak(self):passclass American(People): def
    发表于 03-09 16:38

    python开发之‘’讲解

    Python 在尽可能不增加新的语法和语义的情况下加入了机制。这种机制是 C++ 和 Modula-3 的混合。 Python中的没有在用户和定义之间建立一个绝对的屏障,而是依赖于
    发表于 03-15 14:12 1次下载

    揭开Python中self的神秘面纱

    许多python初学者,在接触到python面向对象的时候,就被中包含的方法中的self打败了,不知道self是何物?
    的头像 发表于 01-19 17:51 1785次阅读
    揭开<b class='flag-5'>Python</b><b class='flag-5'>类</b>中self的神秘面纱

    为什么要学习PythonPython的定义是怎么样的应该如何使用

    无法访问私有变量,从而保证的设计思想和内部结构并不完全对外公开。在 Python中除了xxx格式的成员变量外,其他的成员变量都是公有变量。
    发表于 09-02 17:50 12次下载
    为什么要学习<b class='flag-5'>Python</b>?<b class='flag-5'>Python</b>中<b class='flag-5'>类</b>的定义是怎么样的应该如何使用

    10种聚介绍和Python代码

    分享一篇关于聚的文章,10种聚介绍和Python代码。
    的头像 发表于 07-30 10:25 3051次阅读

    简述python和实例属性赋值

    python主体没有任何内容,只有pass语句,称为空。 ## 1.2 obj.attr属性赋值 通过obj.attr=value进行和实例属性赋值。
    的头像 发表于 02-21 10:30 1051次阅读

    Python的属性和方法是什么

    编程中我们用来创建对象。日常生活中的汽车设计图就是我们Python中的。日常生活中的小汽车就是Python中的对象。
    的头像 发表于 02-23 10:17 877次阅读

    什么是python与对象

    Python中的,type函数查看数据类型
    的头像 发表于 02-23 10:18 766次阅读

    Python中轻松调用Java方法-PyJNIus

    PyJNIus 是一个神奇的 Python 第三方模块。它能使用Java本地接口将Java作为Python访问
    的头像 发表于 02-24 13:49 1718次阅读

    Python中的和对象详解

    Python 是一种面向对象的编程语言,它支持和对象。是一种用户自定义的数据类型,用于定义对象的属性和方法。对象是的实例,它包含的属
    的头像 发表于 04-20 16:53 1136次阅读

    PyJNIus:在Python中轻松调用Java方法

    PyJNIus 是一个神奇的 Python 第三方模块。它能使用Java本地接口将Java作为Python访问
    的头像 发表于 10-30 11:32 916次阅读

    PyJNIus :让你在Python中轻松调用Java方法

    PyJNIus 是一个神奇的 Python 第三方模块。它能使用Java本地接口将Java作为Python访问
    的头像 发表于 11-01 10:45 844次阅读

    Python中元的作用

    1.什么是 在理解元之前,我们必须先掌握Python中的(class)。 和大多数语言一样,Python中的
    的头像 发表于 11-02 11:18 532次阅读
    <b class='flag-5'>Python</b>中元<b class='flag-5'>类</b>的作用