python中类的应用

实战一:定义一个圆的类计算面积和周长

需求

  1. 定义一个圆类-Circle,提供一个属性r(半径);

  2. 提供两个方法:计算圆的面积get area(self)和计算圆的周长get perimeter(self),通过两个方法计算圆的周长和面积并且对计算结果进行输出,最后从键盘录入半径,创建圆类的对象,并调用计算面积和周长的方法输出面积和周长

点击查看代码
class Circle:
    def __init__(self,r):
        self.r = r
    def get_area(self):
        s = 3.14 * self.r * self.r
        print("圆的面积为:",s)
    def get_perimeter(self):
        d = 2 * 3.14 * self.r
        print("圆的面积为:", d)

r = eval(input("请输入圆的半径r:"))
circle = Circle(r)
circle.get_area()
circle.get_perimeter()


---------------------------------
class Circle:
    def __init__(self,r):
        self.r = r
    def get_area(self):
       # return 3.14 * self.r * self.r
       return 3.14 * pow(self.r,2)
    def get_perimeter(self):
        return 2 * 3.14 * self.r

r = eval(input("请输入圆的半径r:"))
circle = Circle(r)
print("圆的面积为:",circle.get_area())
print("圆的周长为:",circle.get_perimeter())


效果:
  请输入圆的半径r:4
  圆的面积为: 50.24
  圆的周长为: 25.12

实战二:定义学生类录入5个学生信息存储到列表中

需求:定义学生类Student,包含姓名,年龄,性别,分数四个属性,提供一个用于学员信息输出的方法info(self)。编写测试代码,使用循环录入5位学生的信息,由于录入的学生信息中间使用“#”进行分隔所以需要使用字符串的split()方法,进行劈分,使用劈分的信息创建学生对象,使用列表存储学生信息,最后使用循环遍历列表,调用对象的info()方法输出学员信息。

点击查看代码
    class Student:
        def __init__(self,name,age,gender,score):
            self.name = name
            self.age = age
            self.gender = gender
            self.score = score

        def info(self):
            print(f'姓名:{self.name},年龄:{self.age},性别:{self.gender},分数:{self.score}')

    print("请输入5位学生的信息:(姓名#年龄#性别#分数)")
    lst=[]

    for i in range(1,6):
        s = input(f"请输入第{i}位学生信息:")
        s_lst = s.split('#')
        # 创建学生对象
        stu = Student(s_lst[0],s_lst[1],s_lst[2],s_lst[3])
        # 将学生对象添加到列表中
        lst.append(stu)

    # 遍历列表,调用学生对象的info方法
    for i in lst:
        i.info()

    --------------------------------------
    效果:
      请输入5位学生的信息:(姓名#年龄#性别#分数)
      请输入第1位学生信息:a#1#0#20  
      请输入第2位学生信息:b#2#1#30
      请输入第3位学生信息:c#3#0#40
      请输入第4位学生信息:d#4#1#50
      请输入第5位学生信息:f#5#0#60
      姓名:a,年龄:1,性别:0,分数:20  
      姓名:b,年龄:2,性别:1,分数:30
      姓名:c,年龄:3,性别:0,分数:40
      姓名:d,年龄:4,性别:1,分数:50
      姓名:f,年龄:5,性别:0,分数:60

实战三:使用面向对象思想实现乐器弹奏

需求:乐手可以弹奏不同的乐器从而发出不同的声音。可以弹奏的乐器包括二胡、钢琴和琵琶。定义乐器类Instrument,包括方法make sound()定义乐器类的子类:二胡Erhu、钢琴Piano和小提琴
Violin,定义一个函数可以弹奏各种乐器play(instrument),测试给乐手不同的乐器让他弹奏。

点击查看代码
class Instrument:
    def make_sound(self):
        pass

class Erhu(Instrument):
    def make_sound(self):
        print("二胡在演奏")

class Piano(Instrument):
    def make_sound(self):
        print("钢琴在弹奏")

class Violin(Instrument):
    def make_sound(self):
        print("小提琴在演奏")

def play(instrument):
    instrument.make_sound()

erhu = Erhu()
piano = Piano()
violin = Violin()

play(erhu)
play(piano)
play(violin)

------------------------------------
效果:
  二胡在演奏
  钢琴在弹奏
  小提琴在演奏

实战四:请使用面向对象的思想,设计自定义类,描述出租车和家用轿车的信息

出租车类: 属性包括:车型,车牌,所属出租公司:方法包括:启动,停止
家用轿车类: 属性包括:车型,车牌,车主姓名;方法包括:启动,停止

点击查看代码
class Car:
    def __init__(self,type,numb):
        self.type = type
        self.numb = numb

    def start(self):
        print('启动')
    def stop(self):
        print("停止")

class Texi(Car):
   def __init__(self,type,numb,company):
        super().__init__(type,numb)
        self.company = company
    # 重写方法
   def start(self):
       print("乘客好")
       print('我的车牌号是:',self.numb,'公司:',self.company)
   def stop(self):
       print("已到站")

class FamilyCar(Car):
   def __init__(self,type,numb,name):
        super().__init__(type,numb)
        self.name = name
    # 重写方法
   def start(self):
       print("我是:",self.name)
   def stop(self):
       print("已到家")

taxi=Texi('大众',"京Q93207",'hkn')
taxi.start()
taxi.stop()
print('-'*42)
fc= FamilyCar('大众',"京A88888",'kyle')
fc.start()
fc.stop()

-------------------------------------
乘客好
我的车牌号是: 京Q93207 公司: 宏远
已到站
------------------------------------------
我是: kyle
已到家
posted @ 2025-04-09 22:57  kyle_7Qc  阅读(28)  评论(0)    收藏  举报