美文网首页
python类的假私有成员变量

python类的假私有成员变量

作者: skullfang | 来源:发表于2018-01-08 16:07 被阅读0次

前言

Python的类并不使用关键字区分是私有成员和共有成员,但是为啥私有成员变量外面还是访问不到呢?

粗糙的隐藏

普通的python类

class TT:
    def __init__(self,name):
        self.name=name
        self.privateMem=1

t=TT('hah')
print(t.privateMem)

想都不用想会打印出1

因为这个时候privateMem还是个共有 成员,那么怎么变成私有成员呢?

加俩下划线

class TT:
    def __init__(self,name):
        self.name=name
        self.__privateMem=1

t=TT('hah')
print(t.privateMem)

结果就是

Traceback (most recent call last):
  File "/Users/zhangyan/Documents/moklearn/pyHigh/one/demo3.py", line 13, in <module>
    print(t.privateMem)
AttributeError: 'TT' object has no attribute 'privateMem'

提示说找不到这个成员。那么隐藏起来了么?答案是根本没有!表面私有而已。

print(t.__dict__)

看看成员

{'_TT__privateMem': 1, 'name': 'hah'}

WTF ,原来python就是给这个成员换了个名字(privateMem变成了_TT__privateMem ),我的天,这就私有辣?(私有方法也是一样)

class TT:
    def __init__(self,name):
        self.name=name
        self.__privateMem=1

    def __privatefun(self):
        print("private")


t=TT('hah')
print(t._TT__privateMem)
t._TT__privatefun()

这真是一个粗糙的“私有化”

相关文章

  • python类的假私有成员变量

    前言 Python的类并不使用关键字区分是私有成员和共有成员,但是为啥私有成员变量外面还是访问不到呢? 粗糙的隐藏...

  • C++学习第2课,笔记

    1 类 成员变量 成员函数 private://私有的 public://公有的 *1 公有函数修改私有变量; *...

  • objc_runtime

    获取某个类的成员变量; 获取成员函数 UISearchBar的私有变量

  • 2018-06-28 python 类的私有变量和私有方法

    转发python 类的私有变量和私有方法 类的私有变量和私有方法在Python中可以通过在属性变量名前加上双下划线...

  • 03.继承中成员变量的特点

    继承中成员变量的特点 A:子类只能获取父类非私有成员子父类中成员变量的名字不一样直接获取父类的成员变量子父类中成员...

  • KVC的使用

    利用KVC修改类的私有成员变量(UIPageControl)

  • iOS中你所迷惑的成员变量、实例变量、属性变量到底有什么区别??

    成员变量 成员变量是声明在类{}中的,成员变量是私有的,只能自己进行获取 实例变量 实例变量是包含在成员变量中的一...

  • Python中的静态成员变量

    python 也可以定义静态成员变量,就是类的变量。 注意python的静态成员变量只能通过 类.变量名 的形式获...

  • 1、类的定义 类的成员出现顺序:公共静态常量、私有静态变量、私有实体变量,然后才是公共函数,私有的工具函数紧随在该...

  • Day8 - private与this

    面向对象:继承、封装、多态 private: 私有权限修饰符,用于修饰类中的成员(成员变量、成员 函数);私有只在...

网友评论

      本文标题:python类的假私有成员变量

      本文链接:https://www.haomeiwen.com/subject/krljgxtx.html