zoukankan      html  css  js  c++  java
  • python单下划线/双下划线总结

    class A():
        def __init__(self,name,number,age):
            self.__name = name
            self._number = number
            self.age = age
    
    a = A('alex',2018,12)
    a._number = 1000
    a.age = 20
    A._hobby = 'wobianle'
    # 不提倡这样调用
    print(a._A__name)
    >>>alex

    Python 用下划线作为变量前缀和后缀指定特殊变量

    _xxx   :保护变量,意思是只有类对象和子类对象能够访问到这些变量(尽量避免在类外部直接修改)

    __xxx__ :系统定义名字

    __xxx  :类中的私有变量名

    核心风格:避免用下划线作为变量名的开始。


    因为下划线对解释器有特殊的意义,而且是内建标识符所使用的符号,我们建议程序员避免用下划线作为变量名的开始。

    一般来讲,变量名_xxx被看作是“私有 的”,在模块或类外不可以使用(是可以使用的,但是一般不用)。当变量是私有的时候,用_xxx 来表示变量是很好的习惯。因为变量名__xxx__对Python 来说有特殊含义,对于普通的变量应当避免这种命名风格。


    “单下划线” 开始的成员变量叫做保护变量,意思是只有类对象和子类对象自己能访问到这些变量;

    “双下划线” 开始的是私有成员,意思是只有类对象自己能访问,连子类对象也不能访问到这个数据。

    以单下划线开头(_foo)的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用“from xxx import *”而导入;

    以双下划线开头的(__foo)代表类的私有成员;

    以双下划线开头和结尾的(__foo__)代表python里特殊方法专用的标识,如__init__()代表类的构造函数。


    现在我们来总结下所有的系统定义属性和方法, 先来看下保留属性:

    >>> Class1.__doc__ # 类型帮助信息 'Class1 Doc.' 

    >>> Class1.__name__ # 类型名称 'Class1' 

    >>> Class1.__module__ # 类型所在模块 '__main__' 

    >>> Class1.__bases__ # 类型所继承的基类 (<type 'object'>,) 

    >>> Class1.__dict__ # 类型字典,存储所有类型成员信息。 <dictproxy object at 0x00D3AD70> 

    >>> Class1().__class__ # 类型 <class '__main__.Class1'> 

    >>> Class1().__module__ # 实例类型所在模块 '__main__' 

    >>> Class1().__dict__ # 对象字典,存储所有实例成员信息。 {'i': 1234}
    ---------------------
    作者:li_101357
    来源:CSDN
    原文:https://blog.csdn.net/li_101357/article/details/52794164
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    php 魔术方法
    有用的函数系统采集(一)
    php后期静态绑定
    php对象引用及序列化
    php文件操作
    复习mysql视图总结
    jQuery调用WebService详解
    这个网站的界面描述甚好,我喜欢
    喜欢和技术有关的一切~
    Introduction
  • 原文地址:https://www.cnblogs.com/shuai1993/p/10062222.html
Copyright © 2011-2022 走看看