zoukankan      html  css  js  c++  java
  • python基础 day24 面向对象——封装

    一、内容回顾

    1、命名空间

    • 在类命名空间里:静态变量,绑定方法

    • 在对象的命名空间里:类指针,对象的属性(实例变量)

    • 调用习惯

      • 类名.静态变量

      • 对象.静态变量(对象调用静态变量时,不能对变量进行赋值操作)

      • 绑定方法

        • 对象.绑定方法()

      • 实例变量:

        • 对象.实例变量

    2、组合

    • 一个类的对象,是另一个类对象的属性

    • 两个类之间有什么有什么的关系——》班级有学生,班级有课程,图书有作者

    二、今日内容

    1、封装

    -

    2、继承

    class A:
       pass
    class B(A):
       pass
    #B继承A :A是父类(基类,超类),B是子类(派生类)
    • 子类可以使用父类中的静态变量和方法

    • 当子类和父类的方法重名时,只使用子类的方法

    • 当需要使用父类方法时,调用方法:父类名.方法(self)

    • 父类和子类方法的选择

      • 子类的对象,如果调用方法

      • 永远优先调用自己的

      • 如果自己有,用自己的

      • 自己没有,用父类的

      • 如果自己有,还想用父类的,直接在子类方法中调父类的方法:父类名.方法(self)

    class Base:
       def __init__(self, name):
           self.name = name
       def eat(self):
           print('吃老爸的')

       def drink(self):
           print('喝水')

       def sleep(self):
           print('睡觉')
           
    class Cat(Base):
       def eat(self):
           print("吃自己的")
           Base.eat(self) #调用父类的同名方法
       def uptree(self):
           print('爬树')

    class Dog(Base):
       def caretaker(self):
           print('看家')
    xb = Cat("小白")
    xb.eat()
     
    • 思考题

      #在每一个self调用func的时候,我们不看这句话在哪里执行,只看self是谁
      class Foo:
         def __init__(self):
             self.func
         def func(self):
             print('in foo')
      class Son(Foo):
         def func(self):
             print('in son')
      Son()

    • 子类增加自身的独有属性

      class Base:
         def __init__(self, name):
             self.name = name
         def eat(self):
             print('吃老爸的')
         def drink(self):
             print('喝水')
         def sleep(self):
             print('睡觉')
      class Dog(Base):
         def __init__(self,name,color):
             Base.__init__(self,name) #调用了父类的初始化方法,去完成一些通用属性的初始化
             self.color = color   #派生属性
      xb = Dog('小白','黑色')
      print(xb.__dict__)  #{'name': '小白', 'color': '黑色'}
    • 多继承

      • 不断的往上继承

      • 一个类有多个父类,在调用父类时,调用先继承的父类中的方法或静态变量

        class A:
           def func(self):
               print('in A')
        class B:
           def func(self):
               print('in B')
        class C(B,A):
           pass
        C().func()  #继承 从左到右依次找
        #   in B

      object是所有类的类祖宗

      所有的类都继承object

     

  • 相关阅读:
    Angular 中使用第三方模块 axios 请求数据
    angular 创建服务
    Promise和RxJS处理异步对比
    ES6中的迭代器(Iterator)和生成器(Generator)
    async await
    Ajax分析
    JSTL
    EL
    Spring-常用依赖及配置
    Spring-AOP的三种方式
  • 原文地址:https://www.cnblogs.com/iaoyuyuyuhuanghuang/p/14258417.html
Copyright © 2011-2022 走看看