当前位置:   article > 正文

Python 面向对象编程_python rectangle

python rectangle

一、类的定义(相当于多个函数集合的定义)

定义一个矩形类,包含两个数据成员(属性参数):宽度和盖度;该类提供两种方法(功能函数):求面积和周长。

  1. class Rectangle: # 定义一个类,类名为Rectangle
  2. def __init__(self, width, height): # 定义初始化方法(函数),三个参数(属性),至少有self一个参数(形参)
  3. self.width = width # 定义参数变量属性(给实例属性赋值)
  4. self.height = height
  5. def getArea(self): # 定义一个函数功能求面积
  6. S = self.width * self.height # 根据公式求面积值
  7. return S # 返回函数值
  8. def getPerimeter(self): # 定义一个函数功能求周长
  9. C = (self.width + self.height) * 2
  10. return C

二、创建类对象(相当于函数的调用)

  1. rect = Rectangle(3, 5)
  2. # 创建Rectangle的对象(具体值即实参)rect,即将属性参数传递给实例属性,并将结果赋值给rect
  3. print('此矩形的宽为:', rect.width)
  4. print('此矩形的高为:', rect.height)
  5. print('此矩形的面积:', rect.getArea()) # 请注意函数后面添加小括号
  6. print('此矩形的周长:', rect.getPerimeter())

三、类的属性(变量)

1、实例属性,在方法内部通过’self,属性变量名‘定义和访问的变量(在外部通过’对象名,变量名‘名访问)。
2、类属性:在所有方法之外定义的属性(变量)。

四、类的方法(函数)

1、定义,与类相关的函数。

2、类型:实例方法类方法,静态方法。

3、实例方法:至少包含一个对象参数,在内部通过self。方法()‘调用,在外部通过’对象名。方法()调用。

五、类的继承与重写

1、继承:子类继承父类的方法。
2、重写:子类可以重写父类的方法(方法名称相同)。

案例如下:

  1. class Person: # 定义一个父类Person
  2. def __init__(self, name, age, sex):
  3. self.name = name
  4. self.age = age
  5. self.sex = sex
  6. def working(self):
  7. print(self.name, '正在工作!')
  8. def show(self):
  9. print('姓名:{}\n年龄:{}\n性别:{}\n'.format(self.name, self.age, self.sex))
  10. class Student(Person): # 定义子类Student继承父类Person
  11. def __init__(self, name, age, sex, major):
  12. super().__init__(name, age, sex) # 继承父类(调用父类初始化方法),借用super()内置函数
  13. self.major = major
  14. def show(self): # 重写父类方法
  15. Person.show(self) # 继承父类
  16. print('专业', self.major) # 添加额外行为
  17. s = Student(name='张三', age='20', sex='男', major='通信学院智联网') # 给予子类创建对象
  18. s.working()
  19. s.show()

六、综合案例分析

1、定义一个父类Student和两个子类LevelSt和PassSt,在父类中定义2个实例变量和5个方法,使子类继承父类的所有属性和方法,并各自定义根据成绩计算等级和判断是否通过两个方法:同时将代码储存在student.py文件中。
2、显示由LevelSt和PassSt类对象构成学生成绩列表,以及所有学生名字和成绩,并按字典排列。

  1. # 定义student父类
  2. class Student:
  3. def __init__(self, name, grade):
  4. self.name = name
  5. self.grade = grade
  6. def setName(self, name):
  7. self.name = name
  8. def setGrade(self, grade):
  9. self.grade = grade
  10. def getName(self):
  11. return self.name
  12. def show(self):
  13. print('%s\t %s' % (self.name, self.calcLevel()))
  14. # 定义student子类(根据成绩计算等级)
  15. class LevelSt(Student):
  16. def calcLevel(self): # 类的多态
  17. if self.grade >= 90:
  18. return 'A'
  19. elif self.grade >= 80:
  20. return 'B'
  21. elif self.grade >= 70:
  22. return 'C'
  23. elif self.grade >= 60:
  24. return 'D'
  25. else:
  26. return 'E'
  27. # 定义student子类(根据成绩判断是否通过)
  28. class PassSt(Student):
  29. def calcLevel(self): # 类的多态,和前面类的函数名称相同,但功能不同
  30. if self.grade >= 60:
  31. return '通过'
  32. else:
  33. return '不通过'
  34. # 定义列表函数list_St存放学生数据
  35. def list_St():
  36. listOfSt = []
  37. is_continue = 'Y'
  38. while is_continue in ['Y', 'y', 'YES', 'yes']:
  39. name = input('请输入名字:')
  40. grade = float(input('请输入成绩:'))
  41. choice = input('请选择(L or P):')
  42. if choice.upper() == 'L': # 转换成大写
  43. s = LevelSt(name, grade)
  44. else:
  45. s = PassSt(name, grade)
  46. listOfSt.append(s) # 给列表listOfSt追加元素
  47. is_continue = input('继续?(y/n):')
  48. return listOfSt
  49. # 定义显示处理后的学生数据
  50. def display(listOfSt):
  51. print('\n姓名 \t 等级')
  52. listOfSt.sort(key=lambda x: x.getName()) # 将列表元素按字典排列
  53. for each in listOfSt:
  54. each.show()
  55. # 定义主函数
  56. def main():
  57. listOfSt = list_St()
  58. display(listOfSt)
  59. if __name__ == '__main__': # 如果main主函数为脚本代码执行下面的主函数
  60. main()

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Li_阴宅/article/detail/742913
推荐阅读
相关标签
  

闽ICP备14008679号