python _____xx__之间的差别

Posted 每天学习一点点

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

 







以上是关于python _____xx__之间的差别的主要内容,如果未能解决你的问题,请参考以下文章

Python对_和__差别的理解

Python中_,__,__xx__的区别

python ___和__xx__的区别

python __xx__的定义和用处

python面向对象基础内置方法 __xx__

python中 _____xx__() 区别及使用场景