擅长:python、mysql、java
<p>好吧,Python没有封装作为一种“哲学”决策,就像我们经常使用duck类型一样。就我个人而言,我不认为在Python代码中使用私有或受保护的参数有什么意义。</p>
<p>说到您的代码,它似乎可以与以下getter和setter一起工作:</p>
<pre><code>def set_a(self, v):
self.a = v
def get_a(self):
return self.a
</code></pre>
<p>如果对“getattribute”(self,name)的最后一行进行以下修改:</p>
<pre><code>return object.__getattribute__(self, name)
</code></pre>
<p>然而,正如mhawke所提到的,如果在私有变量前面加上前缀,则可以使用某种变量保护的概念。另外,丹尼尔的评论指出了你的列表论点的局限性。通过在私有列表中添加“private”和“protected”,可以保持受保护的“get/set”行为。</p>