一、实验目的:
1、了解如何定义一个类。
2、了解如何定义类的私有数据成员和成员方法。
3、了解如何使用自定义类实例化对象。
二、实验内容:
1、定义一个三维向量类,并定义相应的特殊方法实现两个该类对象之间的加、减运算(要求支持运算符+、一),实现该类对象与标量的乘、除运算(要求支持运算符
*、/),以及向量长度的计算(要求使用属性实现)。
2、继承6.3节例6-1中的Person类创建Student类,添加新的方法用来设置学生专业,然后生成该类对象并显示信息。
3、 实验步骤:
1. 程序代码
T1:
class MyArray:
def __init__(self,x,y,z):
self.__x=x
self.__y=y
self.__z=z
def add(self,a):
x=self.__x+a.__x
y=self.__y+a.__y
z=self.__z+a.__z
print("和=({},{},{})".format(x,y,z))
def sub(self,a):
x=self.__x-a.__x
y=self.__y-a.__y
z=self.__z-a.__z
print("差=({},{},{})".format(x,y,z))
def mul(self,a):
x=self.__x*a
y=self.__y*a
z=self.__z*a
print("乘积=({},{},{})".format(x,y,z))
def truediv(self,a):
x=self.__x/a
y=self.__y/a
z=self.__z/a
print("商=({},{},{})".format(x,y,z))
def length(self):
a=pow(pow(self.__x,2)+pow(self.__y,2)+pow(self.__z,2),0.5)
print("长度为:{}".format(round(a,3)))
print('请输入六个数a,b,c,d,e,f:')
a,b,c,d,e,f=map(int,input().split())
print('N1:',(a,b,c))
print('N2:',(d,e,f))
n1=MyArray(a,b,c)
n2=MyArray(d,e,f)
n1.add(n2)
n1.sub(n2)
n1.mul(2)
n1.truediv(2)
n1.length()
T2:
class Person(object):
def __init__(self, name='', age=20, sex='man'):
self.setName(name)
self.setAge(age)
self.setSex(sex)
def setName(self, name):
if not isinstance(name, str):
print('姓名必须是字符串。')
return
self.__name = name
def setAge(self, age):
if not isinstance(age, int) or age<0:
print('年龄必须是正整数。')
return
self.__age = age
def setSex(self, sex):
if sex not in ('man', 'woman'):
print('性别必须是 "man" 或者 "woman"。')
return
self.__sex = sex
def show(self):
print(self.__name)
print(self.__age)
print(self.__sex)
class Student(Person):
def __init__(self, name='', age=30, sex='man', major='Computer'):
super(Student, self).__init__(name, age, sex)
self.setMajor(major)
def setMajor(self, major):
if not isinstance(major, str):
print('专业必须是字符串。')
return
self.__major = major
def show(self):
super(Student, self).show()
print(self.__major)
if __name__ == '__main__':
zhangsan = Person('Zhang San', 19, 'man')
zhangsan.show()
lisi = Student('Li Si',32, 'man', 'Math')
lisi.show()
2. 结果图片
T1:
T2: