python:以有条理的方式引用"私有"变量的名称

ola*_*ndo 2 python obfuscation private

假设我有一个类,我想引用一些元素的" __dict__(比如,我要复制的字典,并删除不能腌制的属性),从里面的类.

问题是,这些属性是"私有的"所以我的代码看起来像这样

class MyClasss(object):
    def __init__(self):
          self.__prv=1
    def __getstate__(self):
          ret=self.__dict__.copy()
          del ret['_MyClass__prv']
Run Code Online (Sandbox Code Playgroud)

我在del语句中显式引用了类名,这对我来说有点难看.还有更好的东西吗?就像是MyClass.getPrivateString('prv')

当然我可以自己实现一个,但如果没有内置来超越这个问题,我会感到惊讶.

Jon*_*ric 6

考虑仅对私有属性使用单个下划线.这些仍然被认为是私人的,但不会被破坏名称.

class MyClasss(object):
    def __init__(self):
          self._prv=1
    def __getstate__(self):
          ret=self.__dict__.copy()
          del ret['_prv']
Run Code Online (Sandbox Code Playgroud)

  • @noam:是不是想要一个止痛药,所以当你用锤子击打自己时疼痛会减少?@ jon-eric:感谢指向文档的指针. (2认同)