python的底层实现,Python封装底层实现原理详解(通俗易懂)

本文详细介绍了Python封装的底层实现原理,揭示了如何通过底层名称调用双下划线开头的私有属性和方法。Python会将`__`开头的属性和方法改写为`_类名__属性/方法`,使得它们看似私有但实际仍可通过特殊方式访问和修改。通过对CLanguage类的实例,展示了如何调用和修改私有方法及属性。
摘要由CSDN通过智能技术生成

事实上,Python 封装特性的实现纯属“投机取巧”,之所以类对象无法直接调用以双下划线开头命名的类属性和类方法,是因为其底层实现时,Python 偷偷改变了它们的名称。

前面章节中,我们定义了一个 CLanguage 类,定义如下:

class CLanguage :

def setname(self, name):

if len(name) < 3:

raise ValueError('名称长度必须大于3!')

self.__name = name

def getname(self):

return self.__name

#为 name 配置 setter 和 getter 方法

name = property(getname, setname)

def setadd(self, add):

if add.startswith("http://"):

self.__add = add

else:

raise ValueError('地址必须以 http:// 开头')

def getadd(self):

return self.__add

#为 add 配置 setter 和 getter 方法

add = property(getadd, setadd)

#定义个私有方法

def __display(self):

print(self.__name,self.__add)

注意,在这个类中,有一个 __display() 方法,由于其是私有方法&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值