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

    文章

    7523

    浏览量

    127543
  • python
    +关注

    关注

    51

    文章

    4667

    浏览量

    83443

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

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

收藏 人收藏

    评论

    相关推荐

    Python与C#对比

    、private、internal、protected、protectedinternal等的访问修饰符;7. Python没有interface,其只能继承,同时其还支持多继承,而C#只能单继承,一
    发表于 05-14 17:14

    labview2018怎么调用python里的函数

    一个python程序里面有里面有函数用labview2018怎么调用里的函数啊,用labview2018调用直接写函数名不行
    发表于 04-06 13:29

    Python如何实现模糊动态聚

    利用Python实现模糊动态聚
    发表于 06-02 17:38

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

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

    Python中的方法、实例方法和静态方法?

    Python中实例属性和实例方法Python中类属性和方法Python中调用方法
    发表于 11-05 06:25

    请问Python中的方法、实例方法和静态方法是什么?

    Python中的方法、实例方法和静态方法
    发表于 11-09 07:13

    Python提供了几个级别访问的网络服务呢

    Python提供了几个级别访问的网络服务呢?
    发表于 09-30 08:09

    python的理解与使用

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

    python静态方法与方法

    python静态方法与方法1. 写法上的差异类的方法可以分为:静态方法:有 staticmethod 装饰的函数方法:有 classmethod 装饰的函数实例方法:没有任何装饰器的普通函数举个
    发表于 03-07 16:56

    python私有变量和私有方法

    调用。4. 总结一下Python并没有真正的私有化支持,但可用下划线得到伪私有。尽量避免定义以下划线开头的变量。私有变量:以双下划线前导的变量,可以使用 实例._名__变量名 进行访问私有方法:以双
    发表于 03-08 16:30

    python的继承

    python的继承的继承,跟人类繁衍的关系相似。被继承的称为基(也叫做父),继承而得的
    发表于 03-08 16:40

    python的多态和的property属性

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

    怎样使用CubeMonitor访问的公共变量

    我正在尝试使用 CubeMonitor 访问的公共变量,但 CubeMonitor 看不到它们。我的一般结构是:基础{上市:int var_1;int var_2;}派生:公共
    发表于 12-07 08:27

    介绍python列表的边界和嵌套

    本文介绍python列表的边界和嵌套。只能访问python列表范围内的项,python列表可以嵌套python列表。
    的头像 发表于 02-27 14:49 666次阅读

    访问Python元组中的元素

    元组(Tuple)是 Python 编程语言中的一种数据类型。它是一个不可变的序列,其中的元素不能被修改、添加或删除。元组与列表(List)相似,但与列表不同的是,元组一旦创建,就无法更改其内容。在 Python 中,元组使用圆括号 () 来表示。
    的头像 发表于 04-17 11:50 1284次阅读