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. 多态

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    京东Java面试题(二)
    京东Java面试题(一)
    阿里java面试题
    Java垃圾回收机制
    MyBatis面试题
    Java IO流总结
    Spring中文文档
    Vue.js实战之组件之间的数据传递
    Vue.js实战之Vuex的入门教程
    Vue系列——在vue项目中使用jQuery及其第三方插件
  • 原文地址:https://www.cnblogs.com/twotigers/p/7772403.html
Copyright © 2011-2022 走看看