ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

组合

2022-07-04 19:01:59  阅读:163  来源: 互联网

标签:__ 组合 r2 self pi def r1


python中的组合
定义:一个对象中包含另一个对象
作用:降低代码的重复率,减少代码的冗余

练习
圆环
属性:记录大圆半径,小圆半径
实现计算面积:大圆-小圆
实现计算周长:大圆+小圆

一般写法 代码重复
# from math import pi
# class Ring:
#     def __init__(self,r1,r2):
#         self.r1=r1
#         self.r2=r2
#
#     def len(self):
           len1=2*pi*self.r1
           len2=2*pi*self.r2
#         zhouchang=len1+len2
#         print('圆环周长',zhouchang)
#
#     def area(self):
            area1=pi*self.r1**2
            area2=pi*self.r2**2
#         mianji=area1-area2
#         print('圆环面积',mianji)
#
# circle=Ring(8,3)
# circle.len()
# circle.area()

组合写,降低代码重复率,将重复的计算部分提出来,如果有圆柱,圆锥就可以调用同样的方法

#组合写法
# from math import pi
# class Circle:
#     def __init__(self,r):
#         self.r=r
#     def leng(self):
#         self.len=2*pi*self.r
#         return self.len
#     def s(self):
#         self.area=pi*self.r**2
#         return self.area
#
# class Ring:
#     def __init__(self,r1,r2):
#         c1=Circle(r1)     # 创建对象c1,c2
#         c2=Circle(r2)
#         self.r1=c1
#         self.r2=c2
#
#     def len(self):
#         '周长'
#         return self.r1.leng()+self.r2.leng()
#
#     def area(self):
#         '面积'
#         return self.r1.s()-self.r2.s()
#
# ring1=Ring(8,3)
# print(ring1.len())
# print(ring1.area())

练习题

#练习  学生类,课程类
class Student:
    def __init__(self,name,sex,age,course):
        self.name=name
        self.sex=sex
        self.age=age
        self.course=course


class Course:
    def __init__(self,cname,period,price):
        self.cname=cname
        self.period=period
        self.price=price

php=Course('php','3 months',18000)
python=Course('python','5 months',25000)
golang=Course('golang','2 months',17000)

laowang=Student('老王','男',24,'python')
laozhang=Student('老张','男',23,'php')
xiaolin=Student('小林','女',20,'python')

laowang.course=python
print(laowang.course.price)
python.price=30000
print(laowang.course.price)

 

 

 



标签:__,组合,r2,self,pi,def,r1
来源: https://www.cnblogs.com/gm11/p/16444070.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有