python程序设计基础 实验五

⭐python实验专栏,欢迎订阅与关注!

★观前提示:本篇内容为python程序设计实验,代码内容经测试没有问题,但是可能会不符合每个人实验的要求,因此以下内容建议仅做思路参考。

一、实验目的

(1)掌握对类的定义及实例化、方法的重写、重载等。

二、实验内容

1、类的定义及实例化

设计一个Circle(圆)类。该类中包括三个属性,tup(圆心坐标)、radius(半径)、color(颜色)。该类中包括三个方法,init()方法(初始化)、perimeter()(求周长)、area()(求面积)。

创建一个实例分别验证上述功能。

输入用例:

(0,0),5,“蓝色”

输出用例:

周长: 31.400000000000002

面积: 78.5

2、方法的重写1

定义人类Person,其包含一个实例方法SayHello(),功能是打印一句话"Person:吃了吗?"

定义教师类Teacher,该类继承自Person,其包含一个实例方法SayHello(),功能是不能可以打印父类Person的"Person:吃了吗?" ,还能打印输出"Teacher:Hello"。

定义学生类Student,该类继承自Person,其包含一个实例方法SayHello(),功能是打印输出一句话"Student:Hi"。

在测试代码中分别实例化上述三个类的类对象,并分别调用SayHello()方法。

3、方法的重写2

创建SchoolMem类,该类中包含三个数据成员:姓名、性别、年龄;创建Student类,继承自SchoolMem类,添加额外三个数据成员:班级、学号和数量统计;创建Teacher类,继承自SchoolMem类,添加额外三个数据成员:学院、工号和数量统计。要求给每个类适当添加属性、成员方法和特殊方法(如构造方法),实现学生和教师信息的输出,实现并测试这个类。

4、重载__str__()方法。

要求:定义定义复数类Complex,在构造方法中定义属性复数的实部real和虚部image。重载__str__()方法,返回字符串数据"real + image i"。

在测试代码中实例化Complex类对象,并打印输出该对象进行测试。

★温馨提示:以下代码均为改正过的代码,皆已经过测试。

三、源码实现

1.类的定义及实例化
#1.类的定义及实例化
class Circle:
    def __init__(self,tup, radius, color):
        self.center = tup
        self.radius = radius
        self.color = color
    def perimeter(self):
        return 3.14 * 2 * self.radius

    def area(self):
        return 3.14 * self.radius * self.radius

if __name__ == '__main__':
    circle = Circle((0,0),5,"蓝色")
    print("周长:",circle.perimeter())
    print("面积:",circle.area())
2.方法的重写1
#6.2方法的重写1
class Person():
    def SayHello(self):
        print("Person:吃了吗?")
class Teacher(Person):
    def say_hello(self):
        # 1.重写父类的方法。
        # Person.__init__(self)
        # super(Teacher, self).say_hello()# 表示它要获取的SayHello()方法是Teacher类的父类的方法,不是Teacher类自己覆盖的方法。
        super().SayHello()
        # 2.针对子类特有的需求,编写代码。
        print("Teacher:Hello")
class Student(Person):
    def SayHello(self):
        print("Student:Hi")

if __name__=='__main__':
    p1 = Person()
    t1 = Teacher()
    s1 = Student()
    p1.SayHello()
    t1.SayHello()
    s1.SayHello()
3.方法的重写2
#3.方法的重写2
class SchoolMem:
    def __init__(self, name, sex, age):
        self.name = name
        self.sex = sex
        self.age = age

    def Alter(self):
        self.name = input('姓名')
        self.sex = input('性别')
        self.age = input('年龄')

    def PrintInfo(self):
        print(self.name)
        print(self.sex)
        print(self.age)


class Student(SchoolMem):
    total = 0

    def __init__(self, name, sex, age, cno, sno):
        super().__init__(name, sex, age)
        self.cno = cno
        self.sno = sno
        Student.total += 1

    def Alter(self):
        self.cno = input('输入学生所属班级:')
        self.sno = input('输入学生学号:')

    def PrintInfo(self):
        super(Student, self).PrintInfo()
        print(self.cno)
        print(self.sno)


class Teacher(SchoolMem):
    total = 0

    def __init__(self, name, sex, age, cono, jno):
        super().__init__(name, sex, age)
        self.cono = cono
        self.jno = jno
        Teacher.total += 1

    def Alter(self):
        self.cono = input('输入老师所属学院:')
        self.jno = input('输入老师工号:')

    def PrintInfo(self):
        super(Teacher, self).PrintInfo()
        print(self.cono)
        print(self.jno)


a = Student('张三', '男', '20', 5, 20150001)
a.PrintInfo()
b = Teacher('李四', '男', '35', 2, 142123)
b.PrintInfo()
4.重载__str__()方法。
#4.重载str()方法
class Complex:  # 定义复数类Complex
    def __init__(self, real, image):  # 定义构造方法
        self.real = real  # 将self对应对象的real属性赋值为形参 #real的值
        self.image = image  # 将self对应对象的image属性赋值 #为形参image的值

    def __str__(self):  # 定义内置方法__str__
        return str(self.real) + '+' + str(self.image) + 'i'


if __name__ == '__main__':
    c = Complex(3.2, 5.3)  # 定义Complex类对象c
    print(c)  # 输出“3.2+5.3i”

四、实验总结

1️⃣对类的定义及实例化,通过实验有了更深的认识,类的定义是通过关键字class 实现的,类的实例化即将抽象的类赋予实物的过程。

2️⃣关于方法的重写,起初因为对python重写概念了解不深,所以在编写程序时遇到了一些问题,之后通过查阅相关资料,对方法的重写熟悉之后,之前的问题便迎刃而解了。

3️⃣在学习重载的时候,总会将它与重写联系起来,后面了解到了两者的区别与联系,也对重载的概念有了进一步的认识。

2023.3.9记录:Code_流苏(CSDN)
如有任何疑问,评论回复,看到即回,欢迎大家多多交流学习!
★以上实验内容仅供参考。

猜你喜欢

转载自blog.csdn.net/qq_51646682/article/details/129431494