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

  • 相关阅读:
    win8系统下,python 2.7安装xlrd,xlutils和xlwt的方法
    phone number
    string to int
    Linux P2V Azure
    Azure IaaS 知识点小节
    Exchange端口列表
    自签名证书和私有CA签名的证书的区别 创建自签名证书 创建私有CA 证书类型 证书扩展名(转)
    Power BI REST API
    Web App 压力测试
    Azure IaaS限制
  • 原文地址:https://www.cnblogs.com/ybf-yyj/p/9026588.html
Copyright © 2011-2022 走看看