• Python实验项目4 :面对对象程序设计


    1:运行下面的程序,回答问题。

    (1)说明程序的执行过程;

    2)程序运行结果是什么?

    1. # (1)说明程序的执行过程;
    2. # (2)程序运行结果是什么?
    3. # demo1101.py
    4. class FatherClass:
    5. value = 100 # 类属性
    6. def function1(self):
    7. print("self.value=", self.value)
    8. print("FatherClass.value=", FatherClass.value)
    9. class ChildClass(FatherClass):
    10. value=200 #类属性
    11. def function1(self):
    12. super().function1()
    13. print("super().value=",super().value)
    14. print("self.value=",self.value)
    15. print("ChildClass.value=", ChildClass.value)
    16. #主控程序
    17. cc=ChildClass()
    18. cc.function1()
    19. print("用对象访问,cc.value=",cc.value)
    20. print("用类访问,ChildClass.value=",ChildClass.value)
     (1)使用 super()函数调用父类中的属性和方法的程序。 使用 super().function1()语句,调用父类的 function1()方法,此时父类尚未初始化, 第 5 self.value 的值为子类的 value 200。父类的 function1()方法执行后返回,在子类 ChildClass 中继承执行第 12 行,输出父类的 value 值和子类的 value 值。第 14 行用类名 ChildClass 访问子类自己的 value 值。 最后两行分别用对象名和类名访问子类的 value 值。
    (2)运行结果如下:

    2:编写程序,重点理解构造方法在继承中的运用。

    要求:编写 Person 类,其具有 nameagesex 等属性。继承于 Person 类的 Teacher 类,具 有 titlequalitysalaryprize 等属性。显示这些属性,并计算 salaryprize 之和。

    1. # 要求:编写 Person 类,其具有 name、age、sex 等属性。
    2. # 继承于 Person 类的 Teacher 类,具 有 title、quality、salary、prize 等属性。
    3. # 显示这些属性,并计算 salary、prize 之和。
    4. class Person:
    5. name: str=None
    6. age: int=None
    7. sex: str=None
    8. def __init__(self,name: str,age: int,sex: str):
    9. self.name=name
    10. self.age=age
    11. self.sex=sex
    12. def print(self):
    13. print("name:" + self.name)
    14. print("age:" + str(self.age))
    15. print("sex:" + self.sex)
    16. class Teacher(Person):
    17. title=None
    18. quality=None
    19. salary=None
    20. prize=None
    21. def __init__(self,person:Person,title:str,quality:str,salary:int,prize:int):
    22. super().__init__(person.name,person.age,person.sex)
    23. self.title=title
    24. self.quality=quality
    25. self.prize=prize
    26. self.salary=salary
    27. def print(self): # 同名函数会继承父类的执行语句并且加上子类独有的语句
    28. super().print()
    29. print("title:"+self.title)
    30. print("quality:"+self.quality)
    31. print("salary:"+str(self.salary))
    32. print("prize:"+str(self.prize))
    33. def sum(self):
    34. return self.salary+self.prize
    35. # 创建对象
    36. person = Person("周杰伦",18,"男")
    37. t=Teacher(person,"音乐系","流行音乐",20000,2000)
    38. t.print()
    39. print("sum:",t.sum())
     执行结果:

    3:设计并测试一个表示一个点的 MyPoint 类。

    要求:该类包括以下属性:

    x:点的横坐标。

    y:点的纵坐标。

    包括如下方法:

    __init__() (self, x, y):构造方法,创建对象的同时为属性 xy 赋初值。

    getX():获得点的横坐标。

    getY():获得点的纵坐标。

    getDdistance (self,p):返回当前点与点 p 之间的距离。

    1. # 3:设计并测试一个表示一个点的 MyPoint 类。
    2. # 要求:该类包括以下属性:
    3. # x:点的横坐标。
    4. # y:点的纵坐标。
    5. # 包括如下方法:
    6. # __init__() (self, x, y):构造方法,创建对象的同时为属性 x、y 赋初值。
    7. # getX():获得点的横坐标。
    8. # getY():获得点的纵坐标。
    9. # getDdistance (self,p):返回当前点与点 p 之间的距离。
    10. class MyPoint:
    11. x:int=None
    12. y:int=None
    13. def __init__(self,x:int,y:int):
    14. self.x=x
    15. self.y=y
    16. def getX(self)->int:
    17. return self.x
    18. def getY(self)->int:
    19. return self.y
    20. def getDistance(self,p)->float:
    21. return ((p.x-self.x)**2+(p.y-self.y)**2)**0.5
    22. point1 = MyPoint(0, 0)
    23. point2= MyPoint(3, 4)
    24. print(point1.getDistance(point2))
    执行结果:

     

    4:设计一个描述自由落体运动的类,要求能获得时刻的速度和位移,并进行测试。已知重力加速度为9.8m/s。 

     

    1. # 4:设计一个描述自由落体运动的类,要求能获得时刻的速度和位移,并进行测试。已知重力加速度为9.8m/s。
    2. # v=v0+gt s=v0t+1/2gt2
    3. class FreeFall:
    4. g = 9.8
    5. v0 = 0
    6. t = 0
    7. s = 0
    8. v = 0
    9. def __init__(self, v0, t):
    10. self.v0 = v0
    11. self.t = t
    12. self.s=v0*t+1/2*self.g*t**2
    13. self.v=v0+self.g*t
    14. def get_s(self):
    15. return self.s
    16. def get_v(self):
    17. return self.v
    18. def __str__(self):
    19. return "s="+str(self.s)+",v="+str(self.v)
    20. v0= eval(input("请输入初速度:"))
    21. t = eval(input("请输入时间:"))
    22. fall = FreeFall(v0,t)
    23. print(f"该自由落体运动经过{t}的时间的位移为:",fall.get_s())
    24. print(f"该自由落体运动经过{t}的时间的速度为:",fall.get_v())
    25. print(fall.__str__())
     执行结果:

     

     

     

     

     

  • 相关阅读:
    分布式架构服务调用
    vue3引入pinna配置使用
    VUE+ts项目配置--alias别名配置
    Java Stream API详解:高效处理集合数据的利器
    【linux】手动配置静态IPv4
    理论第九课——进制转换(八进制篇)
    【大数据Hive】hive 表设计常用优化策略
    Kubeadm部署k8s集群 && kuboard
    【编程题】【Scratch三级】2020.12 绘制图形
    wangeditor富文本编辑器使用(详细)
  • 原文地址:https://blog.csdn.net/m0_63949203/article/details/134052824