相关疑难解决方法(0)

Python在类中有"私有"变量吗?

我来自Java世界并阅读Bruce Eckels的Python 3模式,食谱和成语.

在阅读类时,接着说在Python中没有必要声明实例变量.你只需在构造函数中使用它们,然后繁荣,它们就在那里.

例如:

class Simple:
    def __init__(self, s):
        print("inside the simple constructor")
        self.s = s

    def show(self):
        print(self.s)

    def showMsg(self, msg):
        print(msg + ':', self.show())
Run Code Online (Sandbox Code Playgroud)

如果这是真的,那么类的任何对象都Simple可以只改变s类外的变量值.

例如:

if __name__ == "__main__":
    x = Simple("constructor argument")
    x.s = "test15" # this changes the value
    x.show()
    x.showMsg("A message")
Run Code Online (Sandbox Code Playgroud)

在Java中,我们学习了有关公共/私有/受保护变量的知识.这些关键字是有意义的,因为有时你想要类中的变量,类外没有人可以访问.

为什么Python中不需要这样做?

python private class

532
推荐指数
11
解决办法
42万
查看次数

如何从Java中的不同类读取私有字段的值?

我在第三方设计的设计很差JAR,我需要访问其中一个私有字段.例如,为什么我需要选择私人领域是否有必要?

class IWasDesignedPoorly {
    private Hashtable stuffIWant;
}

IWasDesignedPoorly obj = ...;
Run Code Online (Sandbox Code Playgroud)

我如何使用反射来获得价值stuffIWant

java reflection field private class

466
推荐指数
7
解决办法
27万
查看次数

Python名称修改

在其他语言中,有助于生成更好代码的一般准则总是尽可能隐藏所有内容.如果对变量是私有还是受保护存在疑问,最好与私有变量一起使用.

对Python来说也是如此吗?我应该首先在所有内容上使用两个前导下划线,并且只在我需要时将它们隐藏起来(只有一个下划线)吗?

如果惯例只使用一个下划线,我也想知道其基本原理.

这是我在JBernardo的回答中留下的评论.它解释了为什么我问这个问题,以及为什么我想知道为什么Python与其他语言不同:

我来自语言,训练你认为一切都应该只是公开的,而不是更多.原因是这将减少依赖性并使代码更安全.反向做事的Python方式 - 从公共开始到隐藏 - 对我来说很奇怪.

python naming-conventions

89
推荐指数
8
解决办法
3万
查看次数

标签 统计

class ×2

private ×2

python ×2

field ×1

java ×1

naming-conventions ×1

reflection ×1