python学习 私有方法,私有方法在继承中的表现

私有方法:顾名思义,只有自己才能使用的方法,在python中,定义私有方法一般用双下划线表示:‘__’


class Sent:

#私有方法(双下划线定义的,比较重要,可以通过新建一个方法调用)

    def __sent_msg(self):
        print('-----------正在发送短信-----------')
#公有方法
  
    def sent_msg(self,new_money):
        if new_money>1000:
            self.__sent_msg()
        else:
            print('余额不足,请先充值,再发送短信')
sent = Sent()
sent.sent_msg(100)
#如上程序所示,私有方法不可以被直接调用
#既然如此,私有方法在继承中又该扮演如何的角色呢?
class A:
    def __init__(self):
        self.num1=100
        self.__num2=200
    def test1(self):
        print('========test1=======')
    def __test2(self):
        print('========test2=======')
class B(A):
    pass
#我们可以非常容易的调用继承于A的公有方法
b=B()
b.test1()

在这里插入图片描述

但如果我们试图调用__test2(私有方法)
b.__test2
在这里插入图片描述
会发现程序报错
所以不难得出结论:私有方法不会被继承
而在我们定义的class A中的__init__中也有两个方法,
self.num1=100
self.__num2=200
同理,当我们在程序中调用self.num1时,程序运行
在这里插入图片描述
当我们运行self.__num2时,程序报错
在这里插入图片描述
但是问题又双来了,当我们调用的是公有方法,但该公有方法却又调用了私有方法会怎样呢?
在class A 原程序基础上再定义一个函数

        def test3(self):
    		msg3=self.__num2
 		    print(msg3)
 		    #公有方法test3内部含有A类私有方法__num2
 		  b=class B
 		  b.test3()
 运行结果:

在这里插入图片描述
所以,如果调用的是继承父类的公有方法,可以在这个公有方法中访问父类的私有方法和公有方法
但是,如果在子类中实现了一个公有方法,则不可以调用继承父类的私有方法和私有属性

猜你喜欢

转载自blog.csdn.net/IWTK_wcl/article/details/82991777
今日推荐