python入门第二十二天——面向对象之继承流程

 1 class 父类:
 2     def 喝酒(self):
 3         print("我是老子,我爱喝酒")
 4     def 吃鸡(self):
 5         print("我是老子,我在吃鸡")
 6     def 踢足球(self):
 7         print("我是老子,我今天必须踢足球")
 8 
 9 
10 class 子类(父类):
11     def 大保健(self):
12         print('我是儿子,我要大保健')
13     def 喝酒(self):
14         print("我是儿子,儿子不能喝酒")
15     def 吃鸡(self):
16         super(子类,self).吃鸡()#执行父类中的方法
17         print("我是儿子我才不要吃鸡。我讨厌吃鸡")
18         #父类.吃鸡(self) 直接调用
19 
20 print("调用子类中的方法:")
21 a=子类()
22 a.大保健()
23 print("调用父类中的方法")
24 a.踢足球()
25 print("我对父类中的方法不满意,要对父类中的方法重写")
26 a.喝酒()
27 print("虽然我重写了父类的内容,但是我还是想一起调用父类的方法")
28 a.吃鸡()

运行结果:

"D:Program Files (x86)python36python.exe" F:/python从入门到放弃/7.20/面向对象2.py
调用子类中的方法:
我是儿子,我要大保健
调用父类中的方法
我是老子,我今天必须踢足球
我对父类中的方法不满意,要对父类中的方法重写
我是儿子,儿子不能喝酒
虽然我重写了父类的内容,但是我还是想一起调用父类的方法
我是老子,我在吃鸡
我是儿子我才不要吃鸡。我讨厌吃鸡

Process finished with exit code 0

 既可以执行父类,又可以执行子类的方法。

 1 #!/usr/bin/env python3
 2 #-*- coding:utf-8 -*-
 3 '''
 4 Administrator 
 5 2018/7/20 
 6 '''
 7 #应用场景,假设有个web应用程序,开发人员需要给程序,天下新的功能。/////对于别人已经写好的模块,增加新的功能模块
 8 class RequestHandler:
 9     def __init__(self):
10         pass
11 
12     def get(self):
13         print('这是完整的框架')
14 
15 class BaseRequest(RequestHandler):
16     def __init__(self):
17         pass
18     def get(self):
19         print('这是自定义增加的功能')
20         super(BaseRequest, self).get()
21 d=BaseRequest()
22 d.get()

运行结果:

"D:Program Files (x86)python36python.exe" F:/python从入门到放弃/7.20/面向对象2.py
这是自定义增加的功能
这是完整的框架

Process finished with exit code 0

 在python中可以继承两个父类。python和Cc++ 支持,其他不支持。

class Baseli:
    pass

class RequestHandler(Baseli):
    def requsthandler(self):
        print("RequestHandler.requsthandler")
    def process_req(self):
        print("RequestHandler.process_req")
        self.requsthandler()#self代表对象a ,当被调用的时候会从Son 重新开始查询

class Mixu:
    def requsthandler(self):
        print("Mixu.requsthandler")

class Son(Mixu,RequestHandler):
    pass

a=Son()
a.process_req()

运行结果:

"D:Program Files (x86)python36python.exe" F:/python从入门到放弃/7.20/面向对象2.py
RequestHandler.process_req
Mixu.requsthandler

Process finished with exit code 0
 1 #!/usr/bin/env python3
 2 #-*- coding:utf-8 -*-
 3 '''
 4 Administrator 
 5 2018/7/20 
 6 '''
 7 class Baseli:
 8     def __init__(self):
 9         print("Baseli.init")
10 
11 class RequestHandler(Baseli):
12     def __init__(self):
13         # super(RequestHandler,self).__init__()
14         print("RequestHandler.init")
15         Baseli.__init__(self)
16     def requsthandler(self):
17         print("RequestHandler.requsthandler")
18     def process_req(self):
19         print("RequestHandler.process_req")
20         self.requsthandler()#self代表对象a ,当被调用的时候会从Son 重新开始查询
21 
22 class Mixu:
23     def requsthandler(self):
24         print("Mixu.requsthandler")
25 
26 class Son(Mixu,RequestHandler):
27     pass
28 
29 a=Son()
30 a.process_req()

执行顺序:

 1 #!/usr/bin/env python3
 2 #-*- coding:utf-8 -*-
 3 '''
 4 Administrator 
 5 2018/7/20 
 6 '''
 7 #应用场景,对于别人已经写好的模块,增加新的功能模块
 8 class RequestHandler:
 9     def __init__(self):
10         pass
11 
12     def get(self):
13         print('这是完整的框架')
14 
15 class BaseRequest(RequestHandler):
16     def __init__(self):
17         pass
18     def get(self):
19         print('这是自定义增加的功能')
20         super(BaseRequest, self).get()
21 d=BaseRequest()
22 d.get()
23 
24 
25 # class Father:
26 #     def 喝酒(self):
27 #         print("喝酒")
28 #     def 吃鸡(self):
29 #         print("我在吃鸡")
30 #
31 #
32 # class Son(Father):
33 #     def 大保健(self):
34 #         print('我要大保健')
35 #     def 吃鸡(self):
36 #         # super(Son,self).吃鸡()#执行父类中的方法
37 #         print("我才不要吃鸡。我讨厌吃鸡")
38 #         Father.吃鸡(self)
39 #
40 #
41 # a=Son()
42 #
43 # a.吃鸡()
44 
45 
46 
47 # str()
48 # class Bar:
49 #     def __init__(self,name,age,gender):
50 #         '''
51 #         构造方法的特性,类名加特性会自动执行构造方法
52 #         :param name:
53 #         :param age:
54 #         :param gender:
55 #         '''
56 #         self.name=name
57 #         self.age=age
58 #         self.gender=gender
59 #     def foo(self):
60 #         print(self.name,self.age,self.gender,"chifan")
61 #
62 # z1=Bar("Aliex",20,"nan")
63 # print(z1.name)
64 # z1.foo()
65 # z1.name='Tom'
66 # z1.age=12
67 # z1.gender='man'
68 # z1.foo('上山砍柴')
69 # z1.foo('下海捉虾')
70 
71 
72 
73 
74 # class Bar:
75 #     def foo(self,arg):
76 #         print(self,self.name,self.age,self.gender,arg)
77 #
78 #
79 # z1=Bar()
80 # z1.name='Tom'
81 # z1.age=12
82 # z1.gender='man'
83 # print(z1)
84 # z1.foo('12')
85 # print('ceshi'.center(30,'*'))
86 #
87 # z2=Bar()
88 # print(z2)
89 # z2.foo('66666')
练习草稿
原文地址:https://www.cnblogs.com/Mengchangxin/p/9354110.html