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')
    练习草稿
  • 相关阅读:
    Screen Space Soft Shadows
    立体涂鸦的草图渲染
    什么是Civil3D
    Visual Studio 和 .NET Framework
    编程语言的选择
    Civil3D二次开发能做些什么
    Civil3D二次开发Cookbook
    Civil3D跟AutoCAD是什么关系
    C#启示录:尝鲜版
    Thinking In DesignPattern
  • 原文地址:https://www.cnblogs.com/Mengchangxin/p/9354110.html
Copyright © 2011-2022 走看看