长春手机模板建站,问卷调查网站哪个好,wordpress 页面伪静态,wordpress删除文章的分类目录在Python中#xff0c;以下划线 (_) 开头的属性和方法通常被视为内部使用或私有的。而以双下划线 (__#xff09;开头并且不以双下划线结尾的属性和方法叫做“名称修饰#xff08;name mangling#xff09;”。 以单下划线 (_) 开头的属性和方法#xff1a; 这种命名约定暗…在Python中以下划线 (_) 开头的属性和方法通常被视为内部使用或私有的。而以双下划线 (__开头并且不以双下划线结尾的属性和方法叫做“名称修饰name mangling”。 以单下划线 (_) 开头的属性和方法 这种命名约定暗示着某个属性或方法是用于内部使用的但它们并没有强制限制外部访问。这仅仅是一种约定用来给其他程序员传达关于该属性或方法的使用意图。 以双下划线 (__开头并且不以双下划线结尾的属性和方法 这种命名约定用于名称修饰将属性或方法重命名为_类名__属性名或_类名__方法名的形式。这是Python的一种名称重整机制旨在避免子类意外覆盖父类的属性或方法。这种重命名机制使得属性或方法变得更加唯一即使在多层继承中也能保持独立性。需要注意的是这种名称修饰只在类的定义内部起作用外部无法直接访问。
下面是一个示例演示了这两种命名约定的用法
class MyClass:def __init__(self):self._internal_var Internal Variableself.__private_var Private Variabledef _internal_method(self):print(This is an internal method.)def __private_method(self):print(This is a private method.)def public_method(self):print(This is a public method.)self._internal_method()self.__private_method()# 创建对象并访问属性和调用方法
obj MyClass()
print(obj._internal_var) # 输出: Internal Variable
# print(obj.__private_var) # 报错无法直接访问
obj.public_method() # 输出: This is a public method.# This is an internal method.# This is a private method.Internal Variable This is a public method. This is an internal method. This is a private method. 在上述示例中我们定义了一个名为 MyClass 的类。该类包含一个以单下划线 (_) 开头的属性 _internal_var和一个以单下划线 () 开头的方法 _internal_method。此外还有一个以双下划线 (__开头的属性 __private_var 和方法 __private_method。通过对象访问 _internal_var 属性和 public_method 方法没有问题而直接访问 __private_var 属性会导致错误。最后调用 public_method 方法时内部方法 _internal_method 和私有方法 __private_method 也被执行。
需要注意的是尽管使用命名约定可以限制对内部属性和方法的访问但它们并不是Python语言级别的强制限制而是一种约定。在某些情况下仍然可以通过强制访问来获取或修改这些内部属性和方法。