首页 > 编程语言 >实验7 面向对象编程与内置模块

实验7 面向对象编程与内置模块

时间:2023-06-07 11:13:39浏览次数:35  
标签:__ info 内置 面向对象编程 self 模块 ._ print def

实验任务1

task1.py

 1 class Account:
 2 
 3     def __init__(self, name, account_number, initial_amount = 10):
 4         self._name = name
 5         self._card_no = account_number
 6         self._balance = initial_amount
 7     def deposit(self, amount):
 8         self._balance += amount
 9     def withdraw(self, amount):
10         if self._balance < amount:
11             print('余额不足')
12         return
13 
14         self._balance -= amount
15 
16     def info(self):
17         print('持卡人姓名:', self._name)
18         print('持卡人账号:', self._card_no)
19         print('持卡人账户余额:', self._balance)
20     def get_balance(self):
21         return self._balance
22 def main():
23     print('测试账户1:'.center(30, '*'))
24     a1 = Account('Bob', '5002311', 20000)
25     a1.deposit(5000)
26     a1.withdraw(4000)
27     a1.info()
28     print()
29     print('测试账户2:'.center(30, '*'))
30     a2 = Account('Joe', '5006692', 20000)
31     a2.withdraw(10000)
32     a2.withdraw(5000)
33     a2.info()
34 if __name__ == '__main__':
35     main()

运行结果截图

总结:

1、类是一群具有相同特征或者行为的事情的一个统称,是抽象的,不能直接使用;对象是由类创建出来的一个具体存在的。类中定义了什么属性和方法,对象中就有什么属性和方法。

属性是指这类事物具有什么特征,方法是指这类事物具有什么行为

2、类的封装就是将众多属性和方法在类里面实现,封装是对具体对象的一种抽象,即将某些部分隐藏起来。

 实验任务2:

shape.py

'''
shape.py是一个图形类模块
包括:
基类: 图形类Shape
派生类: 矩形类Rect, 圆形类Circle, 三角形类Triangle
'''
class Shape:
    '''形状基类'''
    def info(self):
        '''打印图形信息'''
        pass
    def area(self):
        '''计算面积'''
        pass
    def perimeter(self):
        '''计算周长'''
        pass
class Rect(Shape):
    '''
    矩形类, 继承自Shape
    属性:矩形左上角点的坐标、宽、高
    方法: 打印矩形信息,计算面积、周长
    '''
    def __init__(self, x = 0, y = 0, length = 2, width = 1):
        '''构造矩形对象,根据矩形左上角顶点坐标(x,y)和长、宽'''
        self._x = x
        self._y = y
        self._width = width
        self._length = length
    def info(self):
        print(f'矩形左上角顶点坐标: ({self._x}, {self._y})')
        print(f'矩形长: {self._length}')
        print(f'矩形宽: {self._width}')
    def area(self):
        return self._length * self._width
    def perimeter(self):
        return (self._length + self._width) * 2

class Circle(Shape):
    '''
    圆形类,继承自Shape
    属性:圆心坐标、半径
    方法: 打印圆信息,计算面积、周长
    '''
    def __init__(self, x = 0, y = 0, radius = 1):
        '''构造圆形对象,圆心坐标(x,y), 半径r'''
        self._x = x
        self._y = y
        self._r = radius
    def info(self):
        print(f'圆心: ({self._x}, {self._y})')
        print(f'半径: {self._r}')
    def area(self):
        return 3.14 * self._r * self._r
    def perimeter(self):
        return 2 * 3.14 * self._r

class Triangle(Shape):
    '''
    三角形类,继承自Shape
    属性:三边边长
    方法:打印三角形信息,计算周长、面积
    '''
    def __init__(self, a = 1, b = 1, c = 1):
        self._a, self._b, self._c = a, b, c
    def info(self):
        print(f'三角形三边长: ({self._a}, {self._b}, {self._c})')
    def area(self):
        s = (self._a + self._b + self._c) / 2
        ans = (s*(s - self._a)*(s - self._b)*(s - self._c)) ** 0.5
        return ans
    def perimeter(self):
        return (self._a + self._b + self._c)

def main():
    print('测试1:'.center(40, '*'))
    shapes_lst1 = [Circle(), Rect(), Triangle()]
    for t in shapes_lst1:
        t.info()
        print(f'面积: {t.area():.2f}')
        print(f'周长: {t.perimeter():.2f}')
        print()
    print('测试2:'.center(40, '*'))
    shapes_lst2 = [Circle(x = 2, y = 2, radius = 10),
                   Rect(x = 50, y = 50, length = 10, width = 5),
                   Triangle(a = 3, b = 4, c = 5)]
    for t in shapes_lst2:
        t.info()
        print(f'面积: {t.area():.2f}')
        print(f'周长: {t.perimeter():.2f}')
        print()
if __name__ == '__main__':
    main()

task2.py

1 from shape import Rect, Circle
2 shape_lst = [Rect(5, 5, 10, 5), Circle(), Circle(1, 1, 10)]
3 for i in shape_lst:
4     i.info()
5     print(f'面积: {i.area(): .2f}')
6     print(f'周长: {i.perimeter(): .2f}')
7     print()

运行结果截图

总结:

1、类的继承是一个被作为父类的基础上扩展新的属性和方法来实现的。子类自动具备父类中的非私有属性和非私有方法,并且可以增加新的属性和方法

2、模块是一种组织形式,它将许多有关联的代码组织放到单独的独立文件中,可以理解为一个包含了许多强大功能的包。

实验任务3

task3.py

 1 from math import *
 2 def func(x):
 3     m = 0
 4     s = 2
 5     fst = 1/(((2*pi)**0.5)*s)
 6     sed = exp((-0.5)*((x-m)/s)**2)
 7     return fst*sed
 8 
 9 print(f'x = 1,f = {func(1):.8f}')
10 print(f'x = 3,f = {func(3):.8f}')
11 print(f'x = 5,f = {func(5):.8f}')
12 print(f'x = 7,f = {func(7):.8f}')
13 print(f'x = 9,f = {func(9):.8f}')

运行结果截图

 

标签:__,info,内置,面向对象编程,self,模块,._,print,def
From: https://www.cnblogs.com/xycproduction/p/17462767.html

相关文章

  • 7、hive shell客户端与属性配置、内置运算符、函数(内置运算符与自定义UDF运算符)
    ApacheHive系列文章1、apache-hive-3.1.2简介及部署(三种部署方式-内嵌模式、本地模式和远程模式)及验证详解2、hive相关概念详解--架构、读写文件机制、数据存储3、hive的使用示例详解-建表、数据类型详解、内部外部表、分区表、分桶表4、hive的使用示例详解-事务表、视图、物......
  • Tengine 安装 nginx-module-vts 模块
    Tengine安装nginx-module-vts模块使用Tengine作为反向代理服务器,发现Tengine日志中接口请求过慢,需要绘制grafana展示详细的接口情况解决思路第一版解决思路,修改Tengine中accesslog日志格式,转行为json写入elk中,grafana从elk中获取日志信息绘图access......
  • OverTheWire攻关过程-Natas模块0
    我们来看下Natas模块的介绍机器翻译Natas教授服务器端web安全的基础知识.每个级别的natas都有自己的网站,位于http://natasX.natas.labs.overthewire.org,其中X是级别号。没有SSH登录。要访问某个级别,请输入该级别的用户名(例如,natas0为级别0)及其密码。每个级别都可以访问下一级别的......
  • 实验7 面向对象编程与内置模块
    一、实验结论:1.实验任务1:task1.py程序源码:1'''2银行账户3数据:持卡人姓名、账号、当前余额4操作:取款、存款、打印账户信息、返回账户余额5'''67classAccount:8'''一个模拟银行账户的简单类'''910def__init__(self,name,account_nu......
  • 实验7 面向对象编程与内置模块
    task1.pycode:classAccount:def__init__(self,name,account_number,initial_amount=10):self._name=nameself._card_no=account_numberself._balance=initial_amountdefdeposit(self,amount):self._balance+=a......
  • python-日记模块模板
    1"""2logging配置3"""45#定义三种日志输出格式开始6standard_format='[%(asctime)s][%(threadName)s:%(thread)d][task_id:%(name)s][%(filename)s:%(lineno)d]'\7'[%(levelname)s][%(message)s]......
  • linux下awk内置函数的使用(split/substr/length)
    一、split初始化和类型强制awk的内建函数split允许你把一个字符串分隔为单词并存储在数组中。你可以自己定义域分隔符或者使用现在FS(域分隔符)的值。格式:split(string,array,fieldseparator)split(string,array)-->如果第三个参数没有提供,awk就默认使用当前FS值。例子:......
  • 模块
    简介模块就是一系列的整合,使用时直接调用即可,模块可以提高效率 1.来源1.内置的(python解释器自带的,可以直接使用)2.第三方的(别人写好直接放网上,想要下载才可以使用)3.自定义的(自己写的) 2.存在模式一共有四种模式,目前只用2种1.我们自己写的单个py文件(一个py文件就是一个模......
  • 【python】threading模块之Semaphore
     threading模块之Semaphoreimportthreadingimporttimeimportrandom#Theoptionalargumentgivestheinitialvaluefortheinternalcounter;#itdefaultsto1.#Ifthevaluegivenislessthan0,ValueErrorisraised.semaphore=threading.Semaphore(0)......
  • ASEMI代理英飞凌智能功率模块IKCM10H60GA
    编辑-ZIKCM10H60GA参数描述:型号:IKCM10H60GA最大闭锁电压VCES:600VP-N的直流链路电源电压VPN:450V输出电流IC:10A最大峰值输出电流:16A短路耐受时间tSC:5µs每个IGBT的功耗Ptot:23.1W工作接点温度范围TJ:-40~150℃模块电源电压VDD:20V输入电压VIN:10V开关频率fPWM:20kHz开启上......