Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用另一个Python返回变量_Python_Class_Private_Public - Fatal编程技术网

如何使用另一个Python返回变量

如何使用另一个Python返回变量,python,class,private,public,Python,Class,Private,Public,在与swift进行了大量工作后,我习惯了以下语法: private var __privateVar = 100 // Not accessible from outside the Class public var public_var: Int = { return __privateVar // Returns __privateVar, and is get-only variable } 有没有办法在Python3中重现这一点? 非常感谢Python甚至没有访问修饰符的概念—

在与swift进行了大量工作后,我习惯了以下语法:

private var __privateVar = 100 // Not accessible from outside the Class
public var public_var: Int = {
    return __privateVar // Returns __privateVar, and is get-only variable
}
有没有办法在Python3中重现这一点?
非常感谢

Python甚至没有访问修饰符的概念——因此,如果您的意思是想要一个私有变量,那么您就不能这样做。但是,您可以使用只读属性:

class Test:
    def __init__(self):
        self._var = 'some string'

    @property
    def var(self):
        return self._var
然后,按如下方式使用:

obj = Test()
obj.var # works
obj.var = 'whatever' # raises AttributeError
obj._var = 'whatever' # still works

值得注意的是,您可以在某种程度上模拟私有变量的行为,方法是在变量前面加上双下划线(例如在
\uu var
中),如果在类范围中使用,则会导致名称混乱。不过,这并不是万无一失的,如果你真的想避开它,你随时都可以。但是,一般来说,Python开发人员都知道不要给以一两个下划线开头的变量赋值。

不过,有没有办法通过从另一个下划线返回来访问这些变量?@Carcigenicate对于属性来说,这并不完全正确。Python类中是否有“私有”变量?为了清楚起见,
\u var
不是只读的,用户仍然可以查看或修改它。@Alexander从答案的第一句话就应该足够清楚了。