公有方法:何地调用都可以。无任何修饰。
私有方法:只能在类内部调用。使用双下划线__对类方法进行修饰。
魔法方法:在类名的前面和后面都使用双下划线进行修饰。

注意看注释。

class Book:
def __init__(self,name,author,price):
self.name = name
self.author = author
self.price = price

def __check_name(self):#私有方法
if self.name == '': return False
else:return True

def get_name(self): #公有方法
if self.__check_name():print(self.name,self.author)
else:print('No value')

class BK(Book):
def __init__(self, name, author, price):
super().__init__(name, author, price)

def __check_name(self):
print("hello")

def say(self):
Book.get_name(self) #从这里的打印可以看到,BOOK类的实例属性已经被类BK传入的参数给重写。
BK.__check_name(self)


if __name__ == '__main__':
b =Book('python程序设计教程','江红',59.0)
b.get_name()
# b.__check_name() #直接调用私有方法是非法的,此处会报错;私有方法应该在类内部调用。
print("-----")

q = BK('java程序设计教程','唐三',69.0)
q.say()