zoukankan      html  css  js  c++  java
  • 面向对象一

    面向对象:

     

    1. 什么是对象:
      1. 对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件
      2. python一切皆对象
    2. 面向对象:
      1. 面向对象:对函数进行分类和封装
      2. 一切面向对象干的事,都可以用函数式编程实现.
    3. 类和对象:
      1. 类就是一个模板,模板里可以包含多个函数,函数里实现一些功能
      2. 对象则是根据模板创建的实例,通过实例对象可以执行类中的函数

    In [60]: print(Person)

    <class '__main__.Person'>

    In [61]: print(tom)

    <__main__.Person object at 0x0456B410>

    In [66]: print(type(tom))

    <class '__main__.Person'>

    函数式的应用场景 --> 各个函数之间是独立且无共用的数据

    面向对象编程,函数之间有共享的数据

    1. 三大特征:
      1. 封装
        1. 将内容封装到某处,
        2. 从某处调用被封装的内容

    In [67]: tom.age=10

    In [69]: tom.age

    Out[69]: 10

    1. self关键字

    self就是对象本身

    对于面向对象的封装来说,其实就是使用构造方法将内容封装到 对象 中,然后通过对象直接或者self间接获取被封装的内容。

    1. class Person:  
    2.     def __init__(self, name,age):  
    3.         self.name = name  
    4.         self.age=age  
    5.     def show(self):  
    6.         print(self.name,self.age)  
    7.     
    8.     
    9. tom = Person("tom",10)  
    10. tom.show()  
    11. #tom 10  

     

    1. 继承

    1),面向对象中的继承和现实生活中的继承相同

    1. class Animal:  
    2.     def run(self):  
    3.         print("可以跑")  
    4.     def walk(self):  
    5.         print("可以走")  
    6.     
    7. class Person(Animal):  
    8.     def __init__(self, name,age):  
    9.         self.name = name  
    10.         self.age=age  
    11.     
    12.     def walk(self):  
    13.         super().walk()  
    14.         print("可以直立行走")  
    15.     
    16.     def show(self):  
    17.         print(self.name,self.age)  
    18.     
    19.     
    20. tom = Person("tom",10)  
    21. tom.run()  
    22. tom.walk()  
    23. 可以跑  
    24. 可以走  
    25. 可以直立行走  

    2) 多继承

    1. class Animal:  
    2.     def run(self):  
    3.         print("可以跑")  
    4.     def walk(self):  
    5.         print("可以走")  
    6. class Foo:  
    7.     def work(self):  
    8.         print("工作")  
    9.     
    10. class Person(Animal,Foo):  
    11.     def __init__(self, name,age):  
    12.         self.name = name  
    13.         self.age=age  
    14.     
    15.     def walk(self):  
    16.         super().walk()  
    17.         print("可以直立行走")  
    18.     
    19.     def show(self):  
    20.         print(self.name,self.age)  
    21.     
    22.     
    23. tom = Person("tom",10)  
    24. tom.run()  
    25. tom.walk()  
    26. tom.work()  

    注意:新式类经典类是有区别的:查找方法的顺序是不同的:

    Python 2.x中默认都是经典类,只有显式继承了object才是新式类

    Python 3.x中默认都是新式类,不必显式的继承object

    1. class A():  
    2.     def __init__(self):  
    3.         pass  
    4.     def save(self):  
    5.         print "This is from A"  
    6. class B(A):  
    7.     def __init__(self):  
    8.         pass  
    9. class C(A):  
    10.     def __init__(self):  
    11.         pass  
    12.     def save(self):  
    13.         print  "This is from C"  
    14. class D(B,C):  
    15.     def __init__(self):  
    16.         pass  
    17. fun =  D()  
    18. fun.save()  
    19.     
    20. 经典类的答案: This is from A  
    21. 新式类的答案: This is from C  
    22.     
    23. 作者:刘康  
    24. 链接:https://www.zhihu.com/question/22475395/answer/133787573  
    25. 来源:知乎  
    26. 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。  

    大概就是这样的过程:

            

    其中黑色箭头是继承链条,红色是新式类的寻找链条

     

    1. 多态:

      (⊙o⊙)…python天生就是多态的

     

    推荐博文: http://www.cnblogs.com/wupeiqi/p/4493506.html

     

     

     

    1. 多态

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    修复 Visual Studio Error “No exports were found that match the constraint”
    RabbitMQ Config
    Entity Framework Extended Library
    Navisworks API 简单二次开发 (自定义工具条)
    NavisWorks Api 简单使用与Gantt
    SQL SERVER 竖表变成横表
    SQL SERVER 多数据导入
    Devexpress GridControl.Export
    mongo DB for C#
    Devexress XPO xpPageSelector 使用
  • 原文地址:https://www.cnblogs.com/twotigers/p/7772403.html
Copyright © 2011-2022 走看看