Python 入门 13 —— 类的公有成员、保护成员 、私有成员

类的成员,是类的数据成员和类的方法的统称。为了控制对类的成员的访问权限,类的成员分:公有、保护 、私有三种类型。

一、公有成员

任何时候都可以访问的成员即为公有成员,在定义类的公有成员时没有什么特殊的要求。

二、保护成员

名称以一条下划线“_”开头的成员为保护成员。例如:_x、_fun()。保护成员一般都是可以访问的,只是不能用“from module import * ”语句把其它模块定义的保护成员导入到当前模块。

三、私有成员

名称以两条下划线“__”开头的成员为私有成员。例如:__x、__fun()。私有成员一般不能在类的定义语句外访问。不过,通过“类名._类名私有成员名”(类名和私有成员名之间不要有没有任何的分隔符)或“对象名._类名私有成员名”这样的特殊方式仍然可以访问。例如:

例一:

class Mycls01:
    x = 1           # 公有成员
    _y = 2          # 保护成员
    __z = 3         # 私有成员

# 通过类名访问:
print(Mycls01.x)            # 公有成员能访问:1
print(Mycls01._y)           # 保护成员也能访问:2
print(Mycls01._Mycls01__z)  # 私有成员通过“类名._类名私有成员名”的方式可以访问:3
print(Mycls01.__z)          # 私有成员不能直接用类名访问:AttributeError: type object 'Mycls01' has no attribute '__z'

# 通过对象名访问:
obj01 = Mycls01()

print(obj01.x)            # 公有成员能访问:1
print(obj01._y)           # 保护成员也能访问:2
print(obj01._Mycls01__z)  # 私有成员通过“对象名._类名私有成员名”的方式可以访问:3
print(obj01.__z)          # 私有成员不能直接用对象名访问:AttributeError: 'Mycls01' object has no attribute '__z'

例二:

class Mycls02:
    def __init__(self):
        self.a = 7          # 公有成员
        self._b = 8         # 保护成员
        self.__c = 9        # 私有成员

obj02 = Mycls02()

print(obj02.a)            # 公有成员能访问:7
print(obj02._b)           # 保护成员也能访问:8
print(obj02._Mycls02__c)  # 私有成员通过“对象名._类名私有成员名”的方式可以访问:9
print(obj02.__c)          # 私有成员不能直接用对象名访问:AttributeError: 'Mycls02' object has no attribute '__c'

———————————————— 本篇完 ————————————————

看完之后,麻烦您顺手点击下方 “点赞” 两个字给我点个赞吧 ^-^ , 谢谢您了。

如果您还能像我小学一年级班主任好老师那样,给我随心写上几句表扬或批评的话语,那真是感激不尽!

在我人生的道路上,有了您的鼓励和指导,我一定成长快快。

发布了28 篇原创文章 · 获赞 6 · 访问量 2276

猜你喜欢

转载自blog.csdn.net/Jeff888999/article/details/103978786
今日推荐