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

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

时间:2023-06-11 18:55:27浏览次数:49  
标签:__ info 内置 面向对象编程 self 模块 ._ print def

实验1

task1.py

实验源码:

class Account:
    '''一个模拟银行账户的简单类'''
    def __init__(self, name, account_number, initial_amount = 10):
        '''构造新账户'''
        self._name = name
        self._card_no = account_number
        self._balance = initial_amount
    def deposit(self, amount):
        '''存款'''
        self._balance += amount
    def withdraw(self, amount):
        '''取款'''
        if self._balance < amount:
            print('余额不足')
            return

        self._balance -= amount

    def info(self):


        print('持卡人姓名:', self._name)
        print('持卡人账号:', self._card_no)
        print('持卡人账户余额:', self._balance)

    def get_balance(self):
        return self._balance

def main():
    '''创建Account类对象,测试类'''

    print('测试账户1:'.center(30, '*'))
    a1 = Account('Bob', '5002311', 20000)
    a1.deposit(5000)
    a1.withdraw(4000)
    a1.info()

    print()

    print('测试账户2:'.center(30, '*'))
    a2 = Account('Joe', '5006692', 20000)
    a2.withdraw(10000)
    a2.withdraw(5000)
    a2.info()
if __name__ == '__main__':
    main()

实验结果:

  • 类对象:定义的类就是类对象
  • 实例对象:类对象实例化后就是实例对象
  • 类属性:定义在 __init__ 外部的变量
  • 实例属性:定义在__init__内部的带有self.的变量
  • 类方法:定义在类对象中 且 被@classmethod 装饰的方法就是类方法
  • 实例方法:定义在类对象中,且 未被@classmethod 装饰的方法就是实例方法

task2.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):


    def __init__(self, x=0, y=0, radius=1):
        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):
    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()

 

from Shape import Rect, Circle

shape_lst = [Rect(5, 5, 10, 5), Circle(), Circle(1, 1, 10)]

for i in shape_lst:
    i.info()
    print(f'面积 : {i.area(): .2f}')
    print(f'周长 : {i.perimeter(): .2f}')
    print()

类的继承是面向对象编程中的一种重要概念,指的是从一个已有的类(称为父类或基类)派生出一个新类(称为子类或派生类),使得新类具备父类的所有属性和方法,同时可以在新类中增加新的属性和方法。

在Python中,模块是一个包含Python代码的文件,可以定义变量、函数和类等。通过将相关的功能组织到模块中,可以提高代码的复用性,简化程序的管理和维护。同时,Python内置了许多标准库模块,在使用这些库功能时只需导入相应的模块即可。

task3.py

实验源码:

import math
m = 0
s = 2
def func(x):
    a = 1/(math.sqrt(2*math.pi)*s)
    b = math.exp((-0.5)*((x-m)/s)**2)
    return a*b
print(f'x = 1,f = {func(1):.8f}')
print(f'x = 3,f = {func(3):.8f}')
print(f'x = 5,f = {func(5):.8f}')
print(f'x = 7,f = {func(7):.8f}')
print(f'x = 9,f = {func(9):.8f}')

实验结果:

 

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

相关文章

  • Python 解析配置模块之ConfigParser详解
      yield的英文单词意思是生产,刚接触Python的时候感到非常困惑,一直没弄明白yield的用法。只是粗略的知道yield可以用来为一个函数返回值塞数据,比如下面的例子:defaddlist(alist):foriinalist:yieldi+1取出alist的每一项,然后把i+1塞进去。然后通过......
  • timeit模块的使用
    timeit模块pytho中自带的模块,它有一个日期类timeit.Timertimeit.Timer()的参数timeit.Timer(stmt,setup,globals)stmt:statement要测试执行的代码setup:要测试执行代码需要哪些包timer:定时器函数,有默认值,一般使用默认值globals:代码的作用域,传一些要用到的变量组成......
  • Python中的logging模块
    官方文档基本用法下面的代码展示了logging最基本的用法。#-*-coding:utf-8-*-importloggingimportsys#获取logger实例,如果参数为空则返回rootloggerlogger=logging.getLogger("AppName")#指定logger输出格式formatter=logging.Formatter('%(ascti......
  • 实验七 面向对象编程与内置模块
    实验一classAccount:#一个模拟银行账户的简单类def__init__(self,name,account_number,initial_amount=10):self._name=nameself._card_no=account_numberself._balance=initial_amountdefdeposit(self,amount):......
  • JavaScript模块化实现方式详解
    前言JavaScript是一门非常灵活的编程语言,但是在开发大型应用时,代码的组织和管理变得非常重要。为了解决这个问题,JavaScript社区提出了模块化的概念。模块化可以将代码分割成小的、独立的模块,每个模块只关注自己的功能,这样可以提高代码的可维护性和可重用性。在JavaScript中,有多种......
  • 聊聊结合业务需求给出合理的技术解决方案,改进现有模块功能,提高系统的可扩展性,封装性,稳
    针对提高系统的可扩展性、封装性、稳定性,改进现有模块功能,以下是我给出的一些技术解决方案:使用面向对象编程的设计模式:可以采用一些设计模式如单例模式、工厂模式、观察者模式等,来提高系统的可扩展性和封装性。应用微服务架构:可以将系统拆分成多个独立的服务,使得每个服务都可......
  • Python内置函数max()高级用法
    不管是排序还是选取最大值或者最小值,都应该有个规则或者顺序,而平时我们所说的最大值或最小值实际上也是在某种排序规则或顺序下的最大值和最小值。Python内置函数max()、min()和sorted()以及列表方法sort()都有一个参数key用来指定排序规则,解决的就是这个问题。key参数应该是一个可......
  • Python内置函数int()高级用法
    int()函数常用来把其他类型转换为整数,例如:>>>int(3.2)3>>>int(1/3)0其实,int是Python内置类型之一,之所以能够当作函数来用,是因为它提供了构造方法。另外,它还提供了第二个参数支持更多功能,例如:>>>int('1111',8)585上面的问题是不是很熟悉呢?这也是我的15个读者群入群门槛问题之一,......
  • Python内置函数any()、map()组合运用案例一则
    Python内置函数any()用来测试某个可迭代对象中是否所有对象都等价于True,map()用来把一个函数映射到一个或多个可迭代对象上。问题描述:测试一个字符串中是否包含指定列表中的某个字符串作为子串,不允许使用循环结构。参考代码:......
  • 1000道Python题库系列分享21(11道编程题:内置函数专项练习)
    本期题目,答案在文末:参考代码:......