【Python习题集6】类与对象

news/2025/3/29 19:26:31/

类与对象

  • 一、实验内容
  • 二、实验总结

一、实验内容

1.设计一个Circle类来表示圆,这个类包含圆的半径以及求面积和周长的函数。在使用这个类创建半径为1~10的圆,并计算出相应的面积和周长。
半径为1的圆,面积: 3.14 周长: 6.28
半径为2的圆,面积: 12.57 周长: 12.57
半径为3的圆,面积: 28.27 周长: 18.85
半径为4的圆,面积: 50.27 周长: 25.13
半径为5的圆,面积: 78.54 周长: 31.42
半径为6的圆,面积: 113.10 周长: 37.70
半径为7的圆,面积: 153.94 周长: 43.98
半径为8的圆,面积: 201.06 周长: 50.27
半径为9的圆,面积: 254.47 周长: 56.55
半径为10的圆,面积: 314.16 周长:62.83
(1)源代码

import math
class Circle:def __init__(self, r):self.radius = rdef getArea(self):return math.pi * self.radius ** 2def getPerimeter(self):return 2 * math.pi * self.radius
for i in range(1, 11):t1 = Circle(i)
print("半径为", t1.radius, "的圆,面积:", "%5.2f" % t1.getArea(), "周长:", "%5.2f" % t1.getPerimeter())

(2)运行结果截图
在这里插入图片描述

2.阅读下列程序,写出运行结果,并说明理由。
在这里插入图片描述

(1)源代码

if __name__=="__main__":def fun(x,L=[9]):x=3L.append(8)print("inside fun,x,L:",x,L)x=5
L=[4,1]
fun(x)
print("x,L:",x,L)
fun(x,L)
print("x,L:",x,L)

(2)运行结果截图
在这里插入图片描述

3.设计一个Account类表示账户,自行设计该类中的属性和方法,并利用这个类创建一个账号为998866,余额为2000,年利率为4.5%的账户,然后从该账户中存入150,取出1500。打印出账号,余额,年利率,月利率,月息。
(1)源代码

class Account(object):def __init__(self, countid, money, year_Rate):self.__countid = countidself.__money = moneyself.__year_Rate = year_Ratedef month_Rate(self):return self.getyear_Rate() / 1200.0def month_Interest(self):return self.getmoney() * self.month_Rate()def withdraw(self, x):self.__money = self.getmoney() - xdef deposit(self, x):self.__money = self.getmoney() + xdef getcountid(self):return self.__countiddef getmoney(self):return self.__moneydef getyear_Rate(self):return self.__year_Ratedef setyear_Rate(self, year_Rate):self.__year_Rate = year_Rateyear_Rate = 4.5
countid = "998866"
money = 2000
count1 = Account(countid, money, year_Rate)
count1.deposit(150)
count1.withdraw(1500)
print("账号:", count1.getcountid())
print("余额:", count1.getmoney())
print("年利率:", str(count1.getyear_Rate()) + "%")
print("月利率:", str(count1.month_Rate() * 100) + "%")
print("月息:", count1.month_Interest())

(2)运行结果截图
在这里插入图片描述

4.设计一个Timer类,该类包括:表示小时,分,秒的三个数据域,三个数据域各自的get方法,设置新时间和显示时间的方法。 用当前时间创建一个Timer类并显示出来。
(1)源代码

import datetime
class Timer:def __init__(self, hour, minute, second):self.hour = hourself.minute = minuteself.second = seconddef gethour(self):return self.hourdef getminute(self):return self.minutedef getsecond(self):return self.seconddef settime(self, new_hour, new_minute, new_second):self.hour = new_hourself.minute = new_minuteself.second = new_seconddef showtime(self):print(self.hour, ":", self.minute, ":", self.second)d = datetime.datetime.now()
timer1 = Timer(d.hour, d.minute, d.second)
timer1.showtime()

(2)运行结果截图
在这里插入图片描述

二、实验总结

  1. self
    python的self相当于c++的指针
    self相当于每个房子的门派号,同一个类生成很多对象,对象很相似。当一个对象的方法被调用时,对象为第一个参数传递给方法。
  2. 创建函数可以少些代码,每次引用这个函数。如果硕创建了一个类,又想创建新的类,是否可以通过继承的方式。
    但是如何继承,可能还要学习,比如说现在已经有了一个类了,这个类的属性都有,定义了一个新的类似的类,新的类继承老的类,新的类中的东西也有需要修改的地方,怎么修改新的类需要值得注意。
  3. 当我们不想对象的属性或者内部变量被外部直接引用时,我们可以用使用双下划线的方式。
    __a:此时的__a不能直接被外界引用。
  4. 类在__init__的调用方式还是没有很好的掌握,还要学习,一定可以掌握。
  5. 对象的多态特性的理解。
    比如说list有count的方法,str也有count的方法,不同的对象使用不同的count输出不同的结果,实现不同的功能应该是多态吧。

http://www.ppmy.cn/news/58500.html

相关文章

Android 9.0 设置静态ip重启后获取不到ip的修复

1.概述 在9.0的系统rom定制化开发中,在一些产品开发中,在对于设置静态ip以后可以正常使用, 但是遇到一个新问题 就是开机以后,获取不到ip,地址,这就有点不正常了, 获取不到ip 就自然连不上网了,所以要分析问题所在解决问题 2.设置静态ip重启后获取不到ip的修复的核心…

2023-05-04 LeetCode每日一题(摘水果)

2023-05-04每日一题 一、题目编号 2106. 摘水果二、题目链接 点击跳转到题目位置 三、题目描述 在一个无限的 x 坐标轴上,有许多水果分布在其中某些位置。给你一个二维整数数组 fruits ,其中 fruits[i] [positioni, amounti] 表示共有 amounti 个水…

Ansible的基础了解

目录 第一章.Ansible概述 1.1.Ansible是什么 1.2.Ansible的特性和过程 1.3.ansible 具有如下特点: 1.4.Ansible的四个组件 1.5.ansible 核心程序 1.6.ansible执行的过程 第二章.Ansible 环境安装部署 2.1.实验环境,安装部署 第三章.ansible 命…

STM32F103——时钟详细介绍

STM32F103是一款基于ARM Cortex-M3内核的微控制器,它拥有丰富的外设和强大的计算能力,因此被广泛应用于各种嵌入式系统中。在STM32F103中,时钟是一个极其重要的组成部分,它不仅影响着微控制器的性能和功耗,还关系到外设…

现代CMake高级教程 - 第 7 章:变量与缓存

双笙子佯谬老师的【公开课】现代CMake高级教程课程笔记 第 7 章:变量与缓存 重复执行 cmake -B build 会有什么区别? ❯ cmake -B build -- The C compiler identification is GNU 11.3.0 -- The CXX compiler identification is GNU 11.3.0 -- Detec…

DDD系列:三、Repository模式

为什么需要Repository? ​ Anemic Domain Model(贫血领域模型)特征: 有大量的XxxDO对象:这里DO虽然有时候代表了Domain Object,但实际上仅仅是数据库表结构的映射,里面没有包含(或…

zip文件解压详解

文章目录 1.起因2.详解3.实践4.参考 1.起因 自己之前在linux系统解压zip文件,一直用 unzip *.zip我们期望解压后的文件都是统一放到以*命名的文件夹下,但是自己有一次解压后发现所有的文件并没有放到上述文件夹下,而是放到了该压缩包同目录…

新人入职,都用这三招,让你安全度过试用期

刚入职工作 3招让你安全度过试用期 给新手小伙伴们分享几招 让你们能在试用期的时候平滑去度过 那么第一第一点就是 能自己解决的千万不要去问 千万不要去问 因为往往我们在去面试的时候 我们往往都是备足了很多的资料 备足了很多的面试题库 然后呢 你在给人家面试的时候总有一…