龙空技术网

Python 中不可访问的变量

即将苏醒的Python 163

前言:

如今兄弟们对“python官网无法访问”可能比较关心,咱们都想要学习一些“python官网无法访问”的相关知识。那么小编同时在网摘上汇集了一些关于“python官网无法访问””的相关文章,希望各位老铁们能喜欢,各位老铁们一起来了解一下吧!

当您使用多种语言进行编码时,您通常需要深入挖掘以找到在特定语言中不是很明显的问题的答案。我的问题是闭包是否可以在 python 中模拟真正的私有变量(即与 __ mangling 方法相反,它确实无法访问)。

我决定测试这是否适用于闭包,如下所示

def 外(a,b):    类 此:        通过        #--------------------------     # 真正的私有变量和方法放在这里    这.a = a    这.b = b        def  sum_ () :        返回this.a + this.b        def  product_ () :        返回this.a * this.b        def  set_nums_ (a, b) :        this.a, this.b = a, b        #--------------------------     # 公共变量和方法放在这里    class  inner :         def  get_nums (self) :             return this.a, this.乙                def  set_nums (self, a, b) :            set_nums_(a,b)                def  sum (self) :            返回sum_()                def  product (self) :             return product_()        返回内部()

结果:

>> > x = 外层( 5 , 3 ) >> > x.get_nums()( 5 , 3 ) >> > x.set_nums( 5 , 4 ) >> > x.get_nums()( 5 , 4 ) >> > x.product() 20 >> > x<__ main_ _在.outer..inner对象0x0000023C581E21C0 > >> >

耶!似乎它有效。

当然,进一步挖掘表明,每个 python 对象都有 __closure_ _ 属性,您可以通过它访问该对象的闭包,并且更改上面“私有”变量的值(绕过 set_nums 方法)只是一个问题:

>> > 漏洞 = x.sum.__closure_ _ [ 0 ].cell_contents.__closure_ _ [ 0 ].cell_contents >> > 漏洞<类' __main__。外部.<locals>。这个'> >> > loophole.a = 8 >> > loophole.b = 9 >> > x.get_nums()( 8 , 9 ) >> >

标签: #python官网无法访问 #python 访问类变量