# 在python中,获取和修改私有属性值 # 一般定义函数名get_xx set_xx用来修改私有属性值 class Master(object): def __init__(self): self.kongfu = '[师父方法]' def cake(self): print(f'运用{self.kongfu}来实现') class School(Master): def __init__(self): self.kongfu = '[666]' def make_cake(self): print(f'运用{self.kongfu}来实现') super().__init__() super().cake() class Prentice(School): def __init__(self): self.kongfu = '[独创方法]' # 定义私有属性 self.__money = 200000 # 定义函数: 获取私有属性值 get_xx def get_money(self): return self.__money # 定义函数: 修改私有属性 set_xx def set_money(self): self.__money = 500 def make_cake(self): # 加自己的初始化的原因:如果不加这个自己的初始化,kongfu属性值是上一次调用的init内的kongfu属性值 self.__init__() print(f'运用{self.kongfu}来实现') # 子类调用父类的同名方法和属性:把父类的同名属性和方法再次封装 # def make_master_cake(self): # # 父类类名.函数() # # 再次调用初始化的原因:这里想要调用父类的同名方法和属性,属性在init初始化位置,所以需要再次调用init # Master.__init__(self) # Master.cake(self) # # def make_school_cake(self): # # School.__init__(self) # School.make_cake(self) # 需求: 一次性调用父类School Master的方法 def make_old_cake(self): super().__init__() super().make_cake() # 3.用徒弟类创建对象,调用实例属性和方法 daqiu = Prentice() daqiu.make_old_cake() print(daqiu.get_money()) daqiu.set_money() print(daqiu.get_money()) # 注意:使用super()可以自动查找父类,调用顺序遵循__mro__类属性的顺序。比较适合单继承使用。 # 定义私有属性和方法: 在属性名和方法名 前面 加上两个下划线__