zoukankan      html  css  js  c++  java
  • 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')
    练习草稿
  • 相关阅读:
    48. Rotate Image
    83. Remove Duplicates from Sorted List
    46. Permutations
    HTML5笔记
    18. 4Sum
    24. Swap Nodes in Pairs
    42. Trapping Rain Water
    Python modf() 函数
    Python min() 函数
    Python max() 函数
  • 原文地址:https://www.cnblogs.com/Mengchangxin/p/9354110.html
Copyright © 2011-2022 走看看