python如何调用私有属性与私有方法?

 🔥 交流讨论:欢迎加入我们一起学习!

🔥 资源分享耗时200+小时精选的「软件测试」资料包

🔥 教程推荐:火遍全网的《软件测试》教程  

📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!

很多同学在学习到类与实例的时候,都了解过私有属性与私有方法的概念.但是却不知道如何调用它们?今天就告诉大家如何调用私有属性与私有方法.

我们先定义一个类,里面有私有属性与私有方法

class Class1:
    __str1 = 'abc'  私有属性
    
str2 = 'def'

    
def __method1(self):  私有方法
        
print('这是私有方法')

    def method2(self):
        print('这是一个普通方法')

其中__str1为类的私有属性,str2为非私有属性

__method1为私有方法,method2为非私有方法

私有和非私有怎么区分呢?在属性的前面加上__,就是私有属性,在方法的前面加上__,就是私有方法.

需要注意的是,如果前后都有__,则不是私有属性或私有方法,比如__init__,这个是初始化方法,不属于私有方法.

接下来创建一个子类Class2

class Class2(Class1):

    pass

打印非私有属性,运行结果为def

print(Class2.str2)
 

打印私有属性

print(Class2.__str1)

提示没有这个属性

 也就是说,私有属性无法被继承

之后实例化一个cls2作为Class2的实例,调用非私有方法method2

运行结果如下,说明method2可以被子类调用

调用私有方法__method1

cls2.__method1()

运行结果如下,说明__mehtod1不可以被子类调用

现在我们知道子类无法继承父类的私有属性或私有方法,那么类自身是否可以使用私有属性或私有方法呢?

实例化一个cls1作为Class1的实例

cls1 = Class1()

调用非私有属性,可以显示

print(cls1.str2)
 

调用私有属性,报错

然后试一下调用非私有方法method2

cls1.method2()

运行结果如下

调用私有方法__method1

cls1.__method1()

运行结果

从上面的运行结果判断出,私有属性与私有方法不可以被子类继承,也不可以被类的实例直接调用.

那么,有没有办法可以调用它们呢?

确实有.

刚才我们调用了非私有方法method2,现在我们把method2里的内容修改一下.

def method2(self):

    print(self.__str1)

    self.__method1()

此时我们再调用method2,运行结果如下

__str1与__method1调用成功

本期知识点小结:私有属性与私有方法不能被子类继承,也不能从外部被调用,当要调用私有属性与私有方法时,可以由内部的非私有方法调用私有属性与私有方法,之后外部调用非私有方法间接的调用私有属性与私有方法.

最后我邀请你进入我们的【软件测试学习交流群:785128166】, 大家可以一起探讨交流软件测试,共同学习软件测试技术、面试等软件测试方方面面,还会有免费直播课,收获更多测试技巧,我们一起进阶Python自动化测试/测试开发,走向高薪之路

作为一个软件测试的过来人,我想尽自己最大的努力,帮助每一个伙伴都能顺利找到工作。所以我整理了下面这份资源,现在免费分享给大家,有需要的小伙伴可以关注【公众号:程序员二黑】自提!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值