python中的私有方法

本文介绍了Python中如何实现类似私有方法的效果,通过单下划线和双下划线的约定。双下划线方法在类名前自动改写,使得直接调用困难。同时,文章讨论了__len__魔法方法的重要性,它允许自定义类使用len()函数获取对象长度。未定义__len__时,len()会报错,除非指定对象的某个属性。定义__len__可以提高封装性,尤其在处理私有属性时。
摘要由CSDN通过智能技术生成

1. 理论

  • Python中不存在真正的私有方法。为了实现类似于c++中私有方法,可以在类的方法或属性前加一个“_”单下划线,意味着该方法或属性不应该去调用,它并不属于API。但是,这只是一个形式上的约定,python并不阻止调用。
  • 双下划线的作用是避免覆盖其内容,实现的机制是在带有双下划线的方法或属性前加上类名的标识。由于,python自动对方法和属性进行了改写,所以直接调用带有双下划线的方法是调用不到的。
  • “xx”经常是操作符或本地函数调用的magic methods。在上面的例子中,提供了一种重写类的操作符的功能。它是用于Python调用的。

有人说:初学 len() 的时候始终不明白为什么要定义__len__(),甚至觉得类中有没有__len__()都无所谓,有的时候len()仍然能正常执行。但是经过几次尝试终于明白有的时候为什么要定义__len__()。首先__len__()的作用是返回容器中元素的个数,要想使len()函数成功执行,必须要在类中定义__len__()。而len()的执行指的是在命令窗口输入len(),而在程序中一般情况下即使不定义__len__()程序中的len()函数也能成功执行。个人认为其实二者并没有多大差别,主要还是看在命令窗口的行为,你是输入的是len(对象)还是len(对象.属性)。
在这里插入图片描述
在这里插入图片描述
以上程序的类中定义了__l

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值