zoukankan      html  css  js  c++  java
  • Python Day 20 面向对象 (面向对象的组合用法,面向对象的三大特性

    Python Day 20 面向对象(面向对象的三大特性 - 继承)

    https://mubu.com/doc/1AqL_M0IbW

    组合

      软件重用的重要方式除了继承之外还有另外一种方式,即:组合,组合指的是,在一个类中以另外一个类的对象作为数据属性,称为类的组合。

      用组合的方式建立了类与组合的类之间的关系,它是一种‘有’的关系,当类之间有显著不同,并且较小的类是较大的类所需要的组件时,用组合比较好

    圆环是由两个圆组成的,圆环的面积是外面圆的面积减去内部圆的面积。圆环的周长是内部圆的周长加上外部圆的周长。
    这个时候,我们就首先实现一个圆形类,计算一个圆的周长和面积。然后在"环形类"中组合圆形的实例作为自己的属性来用

    class Circle:
        def __init__(self,lenth,pi=3.14):
            self.lenth = lenth
            self.pi = pi
        def perimeter(self):
            return self.pi*self.lenth**2
        def area(self):
            return 2*self.pi*self.lenth
    
    class Ring:
        def __init__(self,out_r,in_r):
            self.out_circle = Circle(out_r)
            self.in_circle = Circle(in_r)
        def ring_perimeter(self):
            return self.out_circle.perimeter() + self.in_circle.perimeter()
        def ring_area(self):
            return self.out_circle.area() - self.in_circle.area()
    
    r = Ring(10,5)
    print(r.ring_perimeter())
    print(r.ring_area())
    View Code

    继承

      继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为基类或超类,新建的类称为派生类或子类

      python中类的继承分为:单继承和多继承。

    class ParentClass1: #定义父类
        pass
    
    class ParentClass2: #定义父类
        pass
    
    class SubClass1(ParentClass1): #单继承,基类是ParentClass1,派生类是SubClass
        pass
    
    class SubClass2(ParentClass1,ParentClass2): #python支持多继承,用逗号分隔开多个继承的类
        pass

        查看继承

    >>> SubClass1.__bases__ #__base__只查看从左到右继承的第一个子类,__bases__则是查看所有继承的父类
    (<class '__main__.ParentClass1'>,)
    >>> SubClass2.__bases__
    (<class '__main__.ParentClass1'>, <class '__main__.ParentClass2'>)
    View Code

    提示:如果没有指定基类,python的类会默认继承object类,object是所有python类的基类,它提供了一些常见方法(如__str__)的实现。

  • 相关阅读:
    百度地图中找不到BMap的解决
    关于baidu map js api的各种踏坑
    手机版的百度map封装,使用gps定位
    js获取今天,明天,本周五,下周五日期的函数
    表格中的td内的div的文字内容禁止换行一行显示的css
    一次tomcat的调优记录
    一个input输入内容监听联动的demo
    确认框,confirm工具封装
    [Web API] Web API 2 深入系列(6) Model绑定(上)
    [Web API] Web API 2 深入系列(5) 特性路由
  • 原文地址:https://www.cnblogs.com/eailoo/p/9089041.html
Copyright © 2011-2022 走看看