python中成员函数与成员变量的公开与私有 - 美丽的名字

时间:2024-02-17 11:14:39

python中成员函数与成员变量的公开与私有

2019-08-24 22:15  美丽的名字  阅读(418)  评论(0编辑  收藏  举报

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__()#系统定义函数