私有方法:顾名思义,只有自己才能使用的方法,在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()
运行结果:
所以,如果调用的是继承父类的公有方法,可以在这个公有方法中访问父类的私有方法和公有方法
但是,如果在子类中实现了一个公有方法,则不可以调用继承父类的私有方法和私有属性