首页 > 编程 > Python > 正文

Python面向对象之继承和组合用法实例分析

2020-02-15 22:49:11
字体:
来源:转载
供稿:网友

本文实例讲述了Python面向对象之继承和组合用法。分享给大家供大家参考,具体如下:

面向对象的组合用法

软件重用的重要方式除了继承之外还有另外一种方式,即:组合

组合指的是,在一个类中以另外一个类的对象作为数据属性,称为类的组合

圆环是由两个圆组成的,圆环的面积是外面圆的面积减去内部圆的面积。圆环的周长是内部圆的周长加上外部圆的周长。

这个时候,我们就首先实现一个圆形类,计算一个圆的周长和面积。然后在"环形类"中组合圆形的实例作为自己的属性来用

# -*-coding:utf-8 -*-#! python3from math import piclass Circle:  '''  定义了一个圆形类;  提供计算面积(area)和周长(perimeter)的方法  '''  def __init__(self,radius):    self.radius = radius  def area(self):    return pi * self.radius * self.radius  def perimeter(self):    return 2 * pi *self.radiuscircle = Circle(10) #实例化一个圆area1 = circle.area() #计算圆面积per1 = circle.perimeter() #计算圆周长print(area1,per1) #打印圆面积和周长class Ring:  '''  定义了一个圆环类  提供圆环的面积和周长的方法  '''  def __init__(self,radius_outside,radius_inside):    self.outsid_circle = Circle(radius_outside)    self.inside_circle = Circle(radius_inside)  def area(self):    return self.outsid_circle.area() - self.inside_circle.area()  def perimeter(self):    return self.outsid_circle.perimeter() + self.inside_circle.perimeter()ring = Ring(10,5) #实例化一个环形print(ring.perimeter()) #计算环形的周长print(ring.area()) #计算环形的面积

运行结果:

314.1592653589793 62.83185307179586
94.24777960769379
235.61944901923448

继承

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

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

查看继承

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

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

>>> ParentClass1.__bases__(<class 'object'>,)>>> ParentClass2.__bases__(<class 'object'>,)

继承与抽象(先抽象再继承)

抽象即抽取类似或者说比较像的部分。

抽象分成两个层次:

1.将奥巴马和梅西这俩对象比较像的部分抽取成类;

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表