Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.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的构造函数中使用self.\u变量和仅使用self.variable有什么区别_Python_Class_Instance Variables - Fatal编程技术网

在Python的构造函数中使用self.\u变量和仅使用self.variable有什么区别

在Python的构造函数中使用self.\u变量和仅使用self.variable有什么区别,python,class,instance-variables,Python,Class,Instance Variables,例如,如果我创建一个类点 课程点: def__init__(self, x, y): self._x = x self._y = y def__init__(self, x, y): self.x = x self.y = y 及 课程点: def__init__(self, x, y): self._x = x self._y = y def__init__(self, x, y): self.x = x self.y

例如,如果我创建一个类点

课程点:

def__init__(self, x, y):
    self._x = x
    self._y = y 
def__init__(self, x, y):
    self.x = x
    self.y = y 

课程点:

def__init__(self, x, y):
    self._x = x
    self._y = y 
def__init__(self, x, y):
    self.x = x
    self.y = y 

使用self.\ux和just self.x有什么区别

单下划线只是一种命名约定,表示属性应被视为“半私有”(类似地,双下划线表示“私有”),但它没有语义上的区别:代码的两个版本的行为应该完全相同。根据:

\u单个\u前导\u下划线
:弱“内部使用”指示器。例如,M import*中的
不会导入名称以下划线开头的对象

single\u training\u下划线
:按惯例使用,以避免与Python关键字冲突

\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

\uuuuu双\u前导\u和尾随\u下划线\uuuuu
:存在于用户控制的名称空间中的“神奇”对象或属性。例如,
\uuuuuu init\uuuuuu
\uuuu导入\uuuuuuu
\uuuu文件\uuuuu
。永远不要捏造这样的名字;仅按文件规定使用


如果出于某种原因,您有一个以下划线作为前缀的变量,并且可以公开访问该变量,那么最好将该变量的名称包含在模块的名称中。这是代码内文档的一种形式。

双下划线在引号中似乎表示粗体:)