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

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

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

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

python 复制代码
# (1)说明程序的执行过程;
# (2)程序运行结果是什么?
# demo1101.py
class FatherClass:
    value = 100  # 类属性
    def function1(self):
        print("self.value=", self.value)
        print("FatherClass.value=", FatherClass.value)

class ChildClass(FatherClass):
    value=200 #类属性
    def function1(self):
        super().function1()
        print("super().value=",super().value)
        print("self.value=",self.value)
        print("ChildClass.value=", ChildClass.value)

#主控程序
cc=ChildClass()
cc.function1()
print("用对象访问,cc.value=",cc.value)
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 类,其具有 name、age、sex 等属性。继承于 Person 类的 Teacher 类,具 有 title、quality、salary、prize 等属性。显示这些属性,并计算 salary、prize 之和。

python 复制代码
# 要求:编写 Person 类,其具有 name、age、sex 等属性。
# 继承于 Person 类的 Teacher 类,具 有 title、quality、salary、prize 等属性。
# 显示这些属性,并计算 salary、prize 之和。
class Person:
    name: str=None
    age: int=None
    sex: str=None

    def __init__(self,name: str,age: int,sex: str):
        self.name=name
        self.age=age
        self.sex=sex

    def print(self):
        print("name:" + self.name)
        print("age:" + str(self.age))
        print("sex:" + self.sex)

class Teacher(Person):
    title=None
    quality=None
    salary=None
    prize=None
    def __init__(self,person:Person,title:str,quality:str,salary:int,prize:int):
        super().__init__(person.name,person.age,person.sex)
        self.title=title
        self.quality=quality
        self.prize=prize
        self.salary=salary

    def print(self): # 同名函数会继承父类的执行语句并且加上子类独有的语句
        super().print()
        print("title:"+self.title)
        print("quality:"+self.quality)
        print("salary:"+str(self.salary))
        print("prize:"+str(self.prize))
    def sum(self):
        return self.salary+self.prize
# 创建对象
person = Person("周杰伦",18,"男")
t=Teacher(person,"音乐系","流行音乐",20000,2000)
t.print()
print("sum:",t.sum())
执行结果:

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

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

x:点的横坐标。

y:点的纵坐标。

包括如下方法:

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

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

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

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

python 复制代码
# 3:设计并测试一个表示一个点的 MyPoint 类。
# 要求:该类包括以下属性:
# x:点的横坐标。
# y:点的纵坐标。
# 包括如下方法:
# __init__() (self, x, y):构造方法,创建对象的同时为属性 x、y 赋初值。
# getX():获得点的横坐标。
# getY():获得点的纵坐标。
# getDdistance (self,p):返回当前点与点 p 之间的距离。
class MyPoint:
    x:int=None
    y:int=None
    def __init__(self,x:int,y:int):
        self.x=x
        self.y=y
    def getX(self)->int:
        return self.x
    def getY(self)->int:
        return self.y
    def getDistance(self,p)->float:
        return ((p.x-self.x)**2+(p.y-self.y)**2)**0.5


point1 = MyPoint(0, 0)
point2= MyPoint(3, 4)
print(point1.getDistance(point2))
执行结果:

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

python 复制代码
# 4:设计一个描述自由落体运动的类,要求能获得时刻的速度和位移,并进行测试。已知重力加速度为9.8m/s。
# v=v0+gt s=v0t+1/2gt2
class FreeFall:
    g = 9.8
    v0 = 0
    t = 0
    s = 0
    v = 0
    def __init__(self, v0, t):
        self.v0 = v0
        self.t = t
        self.s=v0*t+1/2*self.g*t**2
        self.v=v0+self.g*t
    def get_s(self):
        return self.s
    def get_v(self):
        return self.v
    def __str__(self):
        return "s="+str(self.s)+",v="+str(self.v)


v0= eval(input("请输入初速度:"))
t = eval(input("请输入时间:"))
fall = FreeFall(v0,t)
print(f"该自由落体运动经过{t}的时间的位移为:",fall.get_s())
print(f"该自由落体运动经过{t}的时间的速度为:",fall.get_v())
print(fall.__str__())
执行结果:
相关推荐
kucupung3 分钟前
【C++基础】多线程并发场景下的同步方法
开发语言·c++
Quantum&Coder9 分钟前
Objective-C语言的计算机基础
开发语言·后端·golang
五味香10 分钟前
Java学习,List 元素替换
android·java·开发语言·python·学习·golang·kotlin
Joeysoda14 分钟前
Java数据结构 (从0构建链表(LinkedList))
java·linux·开发语言·数据结构·windows·链表·1024程序员节
迂幵myself14 分钟前
14-6-1C++的list
开发语言·c++·list
扫地僧00916 分钟前
(Java版本)基于JAVA的网络通讯系统设计与实现-毕业设计
java·开发语言
天乐敲代码17 分钟前
JAVASE入门九脚-集合框架ArrayList,LinkedList,HashSet,TreeSet,迭代
java·开发语言·算法
计算机徐师兄26 分钟前
Python基于Django的花卉商城系统的设计与实现(附源码,文档说明)
python·django·python django·花卉商城系统·花卉·花卉商城·python花卉商城系统
机械心37 分钟前
pytorch深度学习模型推理和部署、pytorch&ONNX&tensorRT模型转换以及python和C++版本部署
pytorch·python·深度学习
ALISHENGYA1 小时前
精讲Python之turtle库(二):设置画笔颜色、回旋伞、变色回旋伞、黄色三角形、五角星,附源代码
python·turtle