Python部分【六】-创新互联

继承
  • 继承的本质就是重复代码不要重复编写
  • 概念
    • 子类拥有父类的所有方法和属性
  • 语法
    • class 类名(父类名):
  • 子类继承自父类,可以直接享受父类中已经封装好的方法,不需要再次开放
  • 子类中应该根据职责,封装子类特有的属性和方法
  • 几个专业术语的关系:子类派生 父类基类 继承==派生
  • 继承具有传递性,即子类同时拥有父类的继承属性
  • 方法的重写
    • 当父类方法不能满足子类需求怎么办
    • 重写—在子类中重新编写—在子类中使用同样的方法名进行代码编写即可
    • 扩展—父类方法是子类方法对一部分
      • 在子类方法中重写父类方法
      • 在需要位置采用super().父类方法来调用父亲方法的执行
      • 代码其他的位置针对子类的特定需求,编写子类特有代码实现即可
    • super
      • 是一个特殊的类
      • super()就是使用super类创建出来的对象
      • 最常使用的场景就是在重写父类方法时,调用在父类中封装的方法实现
  • 父类的私有属性和私有方法
    • 子类对象不能在自己的方法内部,直接访问父亲的私有属性和私有方法
    • 子类对象可以通过父类的公有方法去间接访问父类的私有
  • 多继承—子类可以拥有多个父类,拥有所有父亲的属性和方法
    • 语法
      • class 子类名(父类名1,父类名2)
    • 注意
      • 如果两个父类的方法有相同名称—尽量要避免这种情况
  • 新式类和旧式类
    • 新式类—以object为基类,推荐使用
    • 旧式类—不以object为基类
    • class 类名(object):
多态
  • 面向对象的三大特征
    • 封装根据职责将属性和方法封装到一个抽象类中
    • 继承实现了代码的重用,相同代码不需要重复的编写
    • 多态不同的子类对象调用相同的父类方法,产生不同的执行结果
  • 认识多态
    • 多态可以增加代码的灵活度
    • 以继承和重写父类方法为前提
    • 是调用方法的技巧,不会影响到类的内部设计
  • 类的结构
    • 面向对象的开发第一步就是设计类
    • 使用类名()创建对象,创建对象的动作有两部分
      • 在内存中为对象分配空间
      • 调用初始化方法__init__为对象初始化
    • 对象创建后,内存中就有了一个对象实实在在的存在—实例
    • 创建出来的对象叫做类的实例
    • 创建对象的动作叫做实例化
    • 对象的属性叫做实例属性
  • 类其实也是一种对象—类对象在内存中仅有一个
  • 既然类是一种特殊的对象—也可以定义类的属性和方法
  • 类属性和类方法
    • 类属性—给一个类对象定义的属性或者说特征
      • 实现一个类,可以记载自己创建了多少个对象
        class Tool:
            count = 0 # 类属性
            def __init__(self, name):
                self.name = name
                Tool.count += 1
            tool1 = Tool("斧头")
            tool2 = Tool("小刀")
            print(Tool.count)
    • 类方法—针对类对象定义的方法—类方法内部可以直接访问类属性或者调用其他的类方法
      • 定义
        @classmethod
        def 类方法名(cls):
            pass
      • 类方法需要用修饰器@classmethod标识—告诉解释器这是一个类方法
      • 类方法的第一个参数是cls
        • 由哪一个类调用的方法,方法内的cls就是哪一个类的引用
        • 这个参数的实例方法的第一个参数和self类型
        • 提示使用其他名称也可以,不过习惯使用cls
      • 通过类名调用类方法,调用方法时,不需要传递cls参数
      • 方法内部
        • cls.可以访问类的属性
        • cls.可以调用其他方法
      • 实现一个类,可以记载自己创建了多少个对象,这次要求将打印封装成方法
        class Tool:
              count = 0 # 类属性
              @classmethod
              def show_tool_count(cls):
                  print("the number of tools is %d" % cls.count)
              def __init__(self, name):
                  self.name = name
                  Tool.count += 1
          tool1 = Tool("斧头")
          tool2 = Tool("小刀")
          Tool.show_tool_count()
  • 静态方法—如果一个方法既不访问实例属性也不访问类属性则可以将这个方法封装为静态方法
    • 定义
      @staticmethod
      def 静态方法名():
          pass
    • 调用
      • 通过类名.来调用静态方法—和类方法其实基本一致—静态方法不需要创建对象就可以调用
  • 选择何种方法封装的基本准则
    • 实例方法—方法内部需要访问实例属性
      • 实例方法内部可以使用类名.访问类属性
    • 类方法—方法内部只需要访问类属性
    • 静态方法—方法内部,不需要访问实例属性和类属性
    • 实例方法—方法内部既需要访问实例属性又需要访问类属性

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧

在临洮等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供网站设计、成都网站建设 网站设计制作按需求定制开发,公司网站建设,企业网站建设,品牌网站设计,成都全网营销,成都外贸网站建设,临洮网站建设费用合理。
分享名称:Python部分【六】-创新互联
网站链接:http://pwwzsj.com/article/joosi.html