★观前提示:本篇内容为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)
如有任何疑问,评论回复,看到即回,欢迎大家多多交流学习!
★以上实验内容仅供参考。