1:运行下面的程序,回答问题。
(1)说明程序的执行过程;
(2)程序运行结果是什么?
- # (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)运行结果如下:
要求:编写 Person 类,其具有 name、age、sex 等属性。继承于 Person 类的 Teacher 类,具 有 title、quality、salary、prize 等属性。显示这些属性,并计算 salary、prize 之和。
- # 要求:编写 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())
执行结果:
要求:该类包括以下属性:
x:点的横坐标。
y:点的纵坐标。
包括如下方法:
__init__() (self, x, y):构造方法,创建对象的同时为属性 x、y 赋初值。
getX():获得点的横坐标。
getY():获得点的纵坐标。
getDdistance (self,p):返回当前点与点 p 之间的距离。
- # 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。
- # 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__())
执行结果: