码迷,mamicode.com
首页 > 编程语言 > 详细

python _、__、__xx__之间的差别

时间:2018-05-11 23:18:13      阅读:243      评论:0      收藏:0      [点我收藏+]

标签:特殊   font   mod   访问   导入   bsp   nbsp   输出   私有变量   

默认情况下,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

 

python _、__、__xx__之间的差别

标签:特殊   font   mod   访问   导入   bsp   nbsp   输出   私有变量   

原文地址:https://www.cnblogs.com/ybf-yyj/p/9026588.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!