python私有成员与公有成员的区别_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'

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

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

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

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

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值