请问下面这段代码,在不改变类的结构的情况下,如何从外部得到该类的私有属性 __var 的值?(实在不知道咋搞)
class Var:
__var = 0
def _Var__var(self):
pass
又或者是下面这样呢
class Var:
__var = 123
_Var__var = None
上面的两种情况,在不改变类的结构的情况下,该如何获取私有变量 __var 的值呢?
希望有人能证明,在上述条件下,该私有属性彻底私有了(这样Python就有真正的“私有”属性了)
通过元类打印类的构建,可知:
Var
()
{'module': 'main', 'qualname': 'Var', '_Var__var': <function Var._Var__var at 0x000001F7C688EB80>}
__var被覆盖了,故无法取值。所以此时__var不是彻底私有,而是不存在了。
所用代码如下:
class mbc(type):
def __init__(self,a,b,c):
print(a,"\n",b,"\n",c)
super().__init__(a,b,c)
class Var(metaclass=mbc):
__var = 0
def _Var__var(self):
pass