一、类的定义
在Python中,类是一种面向对象的编程概念,它允许你定义一种数据类型,包括数据成员和方法。以下是一个简单的矩形类的定义例子:
class Rectangle:
def __init__(self, width, height):
self.width = width
self.height = height
def getArea(self):
area = self.width * self.height
return area
def getPerimeter(self):
perimeter = (self.width + self.height) * 2
return perimeter
这个类包含两个数据成员(宽度和高度)和两个方法(求面积和周长)。
二、创建类对象
通过类定义,我们可以创建类的对象并调用其方法:
rect = Rectangle(3, 5)
print('此矩形的宽为:', rect.width)
print('此矩形的高为:', rect.height)
print('此矩形的面积为:', rect.getArea())
print('此矩形的周长为:', rect.getPerimeter())
这段代码创建了一个矩形对象,设置了宽度和高度,然后输出矩形的相关信息。
三、类的属性和方法
类中的属性可以分为实例属性和类属性。实例属性在方法内部通过self.属性
定义,而类属性在所有方法之外定义。方法可以分为实例方法、类方法和静态方法。实例方法至少包含一个对象参数,通过self.方法()
调用。
四、类的继承和重写
Python支持类的继承和方法的重写。下面是一个继承和重写的例子:
class Person:
def __init__(self, name, age, sex):
self.name = name
self.age = age
self.sex = sex
def working(self):
print(self.name, '正在工作')
def show(self):
print('姓名:{}\n年龄:{}\n性别:{}\n'.format(self.name, self.age, self.sex))
class Student(Person):
def __init__(self, name, age, sex, major):
super().__init__(name, age, sex)
self.major = major
def show(self):
Person.show(self)
print('专业:', self.major)
# 使用示例
s = Student(name='张三', age='20', sex='男', major='通信学院智联网')
s.working()
s.show()
这个例子中,Student
类继承自Person
类,并重写了show
方法。
五、综合案例分析
假设我们有一个学生类,包括两个子类LevelSt
和PassSt
,分别表示根据成绩计算等级和判断是否通过。下面是一个简单的例子:
class Student:
def __init__(self, name='', grade=0):
self.name = name
self.grade = grade
def setname(self, name):
self.name = name
def setgrade(self, grade):
self.grade = grade
def getname(self):
return self.name
def show(self):
print('%s\t %s' % (self.name, self.calclevel()))
class LevelSt(Student):
def calclevel(self):
if self.grade >= 90:
return 'A'
elif self.grade >= 80:
return 'B'
elif self.grade >= 70:
return 'C'
elif self.grade >= 60:
return 'D'
else:
return 'E'
class PassSt(Student):
def calclevel(self):
if self.grade >= 60:
return '通过'
else:
return '不通过'
这个例子中,LevelSt
和PassSt
类分别继承自Student
类,并重写了calclevel
方法。
六、综合案例应用
在实际应用中,可以通过创建学生对象并存储在列表中,然后按照一定的规则展示学生成绩等信息。
# 定义学生列表
def list_St():
listOfSt = []
is_continue = 'Y'
while is_continue in ['y', 'Y', 'YES', 'yes']:
name = input('请输入名字:')
grade = float(input('请输入成绩:'))
choice = input('请选择(L or P):')
if choice == 'L':
student = LevelSt(name, grade)
elif choice == 'P':
student = PassSt(name, grade)
listOfSt.append(student)
is_continue = input('是否继续输入(Y/N):')
return listOfSt
# 显示学生列表
def show_St(listOfSt):
print('姓名\t 成绩')
print('----------------')
for student in listOfSt:
student.show()
# 主程序
if __name__ == "__main__":
students = list_St()
students.sort(key=lambda x: x.getname())
show_St(students)
这个程序通过用户输入学生信息,创建不同类型的学生对象,并按照姓名排序后展示学生成绩等信息。
结语
这篇文章介绍了Python中类的基础使用和继承的概念,并通过实例代码演示了类的定义、对象创建、属性和方法的使用,以及继承和重写的应用。通过综合案例分析,展示了如何在实际应用中利用类和继承来构建更复杂的程序结构。希望这篇文章能够帮助你更好地理解和应用Python中的面向对象编程。