zoukankan      html  css  js  c++  java
  • python _、__、__xx__之间的差别

    默认情况下,Python中的成员函数和成员变量都是公开的(public),在python中没有类public,private等关键词来修饰成员函数和成员变量。其实,Python并没有真正的私有化支持,但可用下划线得到伪私有。   尽量避免定义以下划线开头的变量!

      (1)_xxx      "单下划线 " 开始的成员变量叫做保护变量,意思是只有类实例和子类实例能访问到这些变量,需通过类提供的接口进行访问;不能用'from module import *'导入

      (2)__xxx    类中的私有变量/方法名 (Python的函数也是对象,所以成员方法称为成员变量也行得通。)," 双下划线 " 开始的是私有成员,意思是只有类对象自己能访问,连子类对象也不能访问到这个数据。

      (3)__xxx__ 系统定义名字,前后均有一个“双下划线” 代表python里特殊方法专用的标识,如 __init__()代表类的构造函数。

    #-*- coding:utf-8 -*-
    
    class A(object):
    
        def __init__(self):#系统定义方法
            self.string='A string'
            self._string='A _string'
            self.__string='A __string'#私有变量
    
        def fun(self):
            return self.string + ' fun-A'
    
        def _fun(self):
            return self._string+'  _fun-A'
    
        def __fun(self):#私有方法
            return self.__string+' __fun-A'
    
        def for__fun(self):#内部调用私有方法
            return self.__fun()
    
    class B(A):
    
        def __init__(self):#系统定义方法
            self.string = 'B string'
    
    
    a=A()
    print a.string
    print a._string
    # print a.__string 不可访问
    
    print a.fun()
    print a._fun()
    #print a.__fun() 不可访问
    print a.for__fun()
    
    b=B()
    print b.fun()
    print b.fun().__len__()#系统定义函数

    输出:

    A string
    A _string


    A string fun-A
    A _string _fun-A
    A __string __fun-A


    B string fun-A
    14

  • 相关阅读:
    P7771 【模板】欧拉路径
    远程服务器运行代码命令(后台执行 及时输出)
    服务器显存溢出
    指定python环境下pip安装包
    语音信号处理
    Es 常用命令
    MySQL常用命令
    Mysql数据按天分区,定期删除,及分区索引
    查看Mysql正在执行的事务、锁、等待
    git忽略提交文件 IT
  • 原文地址:https://www.cnblogs.com/ybf-yyj/p/9026588.html
Copyright © 2011-2022 走看看