相关疑难解决方法(0)

在对象名称之前单个和双下划线的含义是什么?

有人可以解释在Python中对象名称之前有前导下划线的确切含义吗?另外,解释单个和双重前导下划线之间的区别.此外,无论所讨论的对象是变量,函数,方法等,这个含义是否保持不变?

python naming-conventions

1205
推荐指数
13
解决办法
36万
查看次数

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万
查看次数

使用变量和方法的Underscore vs Double下划线

有人很好地向我解释__method()破坏但是由于有很多其他人需要帮助而没有进一步打扰他,我想知道是否有人可以进一步详细说明差异.

例如,我不需要修改但是保持私有所以有人不能做instance._method()?或者它是否只是通过使其独一无二来覆盖另一个变量?我不需要我的内部方法"隐藏",但由于它们是特定的使用我不希望它们在课外使用.

python

127
推荐指数
3
解决办法
9万
查看次数

标签 统计

python ×3

class ×1

naming-conventions ×1

private ×1