前言:
如今兄弟们对“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 访问类变量