• python面向对象(一)


    面向对象

    1.初始面向对象

        面向过程:

            一切以事务的发展流程为中心.

        面向对象:

            一切以对象为中心. 一切皆为对象. 具体的某一个事务就是对象

        打比方:

      面向过程

            大象进冰箱

        步骤: 第一步, 开门, 第二步, 装大象, 第三步, 关门

      面向对象:

      大象, 你进冰箱.

        此时主语是大象. 我操纵的是大象. 此时的大象就是对象

    2. 类和对象

        类: 就是图纸. 创建对象的第一步. 先画图纸. 先写类.

        对象: 对象就是车. 通过图纸造出来的具体的东西. 通过类来创建对象

        类与对象的关系:

            类是对xxx事物的归类.

                    def __init__(self, 参数)  参数一般作为属性设置给对象. 对象就是self, 对属性的封装.

           pass

                    def 方法(self, 参数): 方法. 第一个参数一般是固定的self. 当前类的对象.

                        pass

            对象是xx类型的一个具体

                创建对象: 类名()

        创建类:

        class 类名:

            def __init__(self): # 初始化方法. 又被成为构造方法

                self.属性 = 值

            def fangfa(self):

                方法体(函数体,  return)

        创建对象:

            变量 = 类名() # 实例化 <-> 创建对象

            变量.属性 # 访问对象的属性信息

            变量.方法() # 访问类中的方法

    class HeShang:
        def __init__(self, fh, name, miao):
            self.fahao = fh
            self.name = name
            self.miao = miao
    
        def nianjing(self):
            print("和尚会念经")
    
        def huayuan(self):
            print("和尚会化缘")
    
    lzs = HeShang("花和尚", "鲁智深", "梁山水庙")
    lzs.nianjing()
    lzs.huayuan()

    3. 面向对象和面向过程的对比

        如果写一些比较小的程序用面向过程.

        程序很复杂. 很庞大建议用面向对象.

    4. 面向对象的三大特征

        封装:

            1. 对属性的封装(__init__())

                self.xxx = xxx

            2. 对方法和功能的封装

    class Student:
        def __init__(self, num, name, clazz):
            self.num = num
            self.name = name
            self.clazz = clazz
    
    
    stu = Student("10010", "曹宝宝", "三年二班")
    stu2 = Student("10086", "王迪", "三年一班")
    def teach(s):
        print("教他%s语文课" % (s.name))
    teach(stu)
    teach(stu2)

        继承

            子类自动拥有父类中除了私有内容外的其他所有内容

            class Bar(Foo):  Bar对Foo进行了扩展

                pass

            当出现x是一种y的时候. 推荐使用继承关系

            python支持多继承. 查找顺序: 先找离他近的.

    class Base1:
        def f1(self):
            print("base1.1")
        def f2(self):
            print("base1.f2")
        def f3(self):
            print("base2.f3")
            self.f1()
    class Base2:
        def f1(self):
            print("base2.f1")
    class Foo(Base1,Base2):
        def f0(self):
            print("foo.f0")
            self.f3()
    obj = Foo()
    obj.f0()

        多态  (python原生直接就是多态)

            python更多的支持的是鸭子模型,只要会叫就可以

    class Animal:
        def chi(self):
            print("会吃")
    
    class GoldenMonkey(Animal):
        def chi(self):
            print("用手拿着吃, 五花八门")
    
    class Tiger(Animal):
        def chi(self):
            print("老虎吃肉")
    
    class Elephant(Animal):
        def chi(self):
            print("大象吃香蕉")
    
    def wei_animal(ani):
        ani.chi()
    
    
    t = Tiger()
    m = GoldenMonkey()
    e = Elephant()
    
    wei_animal(t)
    wei_animal(m)
    wei_animal(e)
  • 相关阅读:
    命令行通配符教程
    无插件Vim配置文件vimrc推荐与各VIM配置项解释
    jquery.pagination.js分页插件的使用
    Alpha(4/10)
    Alpha(3/10)
    Alpha(2/10)
    Alpha(1/10)
    需求报告答辩
    项目UML设计
    项目选题报告答辩总结
  • 原文地址:https://www.cnblogs.com/fu-1111/p/10134079.html
Copyright © 2020-2023  润新知