# 如果是先调用了父类的属性和方法,父类属性会覆盖子类属性,故在调用属性前,先调用自己子类的初始化 self.__init__() print(f'运用{self.kongfu}制作煎饼果子') # 调用父类方法, 但是为保证调用到的也是父类的属性,必须在调用方法前调用父类的初始化 def make_master_cake(self): Master.__init__(self) Master.make_cake(self) def make_school_cake(self): School.__init__(self) School.make_cake(self) daqiu = Prentice() daqiu.make_cake() daqiu.make_master_cake() daqiu.make_school_cake() daqiu.make_cake()
多层继承class Master(object): def __init__(self): self.kongfu = '[古法煎饼果?配?]' def make_cake(self): print(f'运?{self.kongfu}制作煎饼果?') class School(object): def __init__(self): self.kongfu = '[??煎饼果?配?]' def make_cake(self): print(f'运?{self.kongfu}制作煎饼果?') class Prentice(School, Master): def __init__(self): self.kongfu = '[独创煎饼果?配?]' def make_cake(self): self.__init__() print(f'运?{self.kongfu}制作煎饼果?') def make_master_cake(self): Master.__init__(self) Master.make_cake(self) def make_school_cake(self): School.__init__(self) School.make_cake(self) # 徒孙类 class Tusun(Prentice): pass xiaoqiu = Tusun() xiaoqiu.make_cake() xiaoqiu.make_school_cake() xiaoqiu.make_master_cake()super(): super()调用父类方法class Master(object): def __init__(self): self.kongfu = '[古法煎饼果?配?]' def make_cake(self): print(f'运?{self.kongfu}制作煎饼果?') class School(Master): def __init__(self): self.kongfu = '[??煎饼果?配?]' def make_cake(self): print(f'运?{self.kongfu}制作煎饼果?') # 方法2.1 # super(School, self).__init__() # super(School, self).make_cake() # 方法2.2 super().__init__() super().make_cake() class Premtice(School): def __init__(self): self.kongfu = '[独创煎饼果子技术]' def make_cake(self): self.__init__() print(f'运用{self.kongfu}制作煎饼果子') # 子类调用父类的同名方法和属性: 把父类的同名属性和方法再次封装 def make_master_cake(self): Master.__init__(self) Master.make_cake(self) def make_school_cake(self): School.__init__(self) School.make_cake(self) # 一次性调用父类的同名属性和方法 def make_old_cake(self): # 方法一: 代码冗余; 父类类名如果变化, 这里的代码需要频繁修改 # Master.__init__(self) # Master.make_cake(self) # School.__init__(self) # School.make_cake(self) # 方法二: super() # 方法2.1 super(当前类名, self).函数() # super(Prentice, self).__init__() # super(Prentice, self).make_cake() # 方法2.2 super().函数 super.__init__() super.make_cake() daqiu = Prentice() daqiu.make_old_cake() # 注意: 使用super()可以自动查找父类,调用顺序遵循__mro__类属性的顺序. 比较适合单继承使用私有属性和私有方法定义私有属性和方法: 在Python中 , 可以为实例属性和方法设置私有权限 , 即设置某个实例属性或实例方法不继承给子类class Master(object): def init(self): self.kongfu = '[古法煎饼果?配?]'def make_cake(self): print(f'运?{self.kongfu}制作煎饼果?')class School(object): def init(self): self.kongfu = '[??煎饼果?配?]'def make_cake(self): print(f'运?{self.kongfu}制作煎饼果?')class Prentice(School, Master): def init(self): self.kongfu = '[独创煎饼果子配方]' # 定义私有属性 self.__money = 2000000
推荐阅读
-
-
电视台方回应罗志祥回归|周扬青事件传得沸沸扬扬!电视台方回应罗志祥回归 形象跌入谷底
-
『』美女约南通一男子网聊“坦诚相见” 才看几十秒就要收费?
-
央视新闻|涉11项诉讼,美国地检署对布鲁克斯案执法警察发逮捕令
-
父亲找老伴儿女不同意怎么办,父亲找老伴儿女不同意 家庭不和睦-
-
网上车市|配置大幅提升,造型微调,保时捷新款帕拉梅拉发布!增混动新车型
-
【乐视网】暴跌99%!贾跃亭破产程序完成,又开始忽悠了?
-
小明叨叨叨|PC端无法比较,太新颖了!,梦幻西游:口袋版最赚钱的囤货模式
-
-
面霜|这4种老牌国货面霜,能保湿美白提亮肤色,很适合五六十岁的人用
-
-
『cnBeta.COM』三星推出易于分离的电视包装纸板 方便用户将其再利用
-
中山名雕高端家装|命悬一线,母亲:想留住孩子的命,2岁白血病男孩病情反复无常
-
永州新闻网|“男学生踹伤猥亵男”案提级由永州市公安局重新调查,责令撤销案件解除刑拘
-
包子妈妈育儿这4种零食又来“坑”娃,长高无望!家长要死死管住嘴,夏天来了
-
北欧31㎡北欧风单人公寓,一个人的生活更加精致优雅!
-
自贡市工商业联合会原主席、市总商会原会长但积忠 严重违法被开除公职
-
天赋异禀的小马|2020年,郭麒麟综艺接到手软,是自己够火还是老爸面子大,原创
-
北京日报客户端婉拒特朗普视察,口罩工厂担忧感染风险
-