一。类的定义(相当于多个函数集合的定义)
In [ ]:
例8.1定义一个矩形类,包括两个数据成员(属性参数):宽带和高度;该类提供两个方法(功能函数):求面积周长
In [8]:
class Rectangle: #定义一个类最后是冒号标志 def __init__(self,width,height):#定义初始化方法,三个参数最少有一个self参数(形参) self.width = width #定义参数变量属性,给属性赋值 self.height = height def getArea(self): S = self.width*self.height return S def getPermiter(self): C= 2*(self.width+self.height) return C
二。创建类对象(相当于函数的调用)
In [9]:
rect = Rectangle(10,20) #创建类对象rect
In [10]:
print(rect.width) print(rect.getArea())
10 200
In [11]:
a = input ('请输入矩形的宽a=') b = input ('请输入矩形的高b=') rect = Rectangle(a,b) print('此矩形的宽a为:',rect.width) print('此矩形的高b为:',rect.height) print('此矩形的面积s为:',rect.getArea()) print('此矩形的周长c为:',rect.getPermiter())
请输入矩形的宽a=1 请输入矩形的高b=2 此矩形的宽a为: 1 此矩形的高b为: 2
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-11-21fcb6cdcd86> in <module> 4 print('此矩形的宽a为:',rect.width) 5 print('此矩形的高b为:',rect.height) ----> 6 print('此矩形的面积s为:',rect.getArea()) 7 print('此矩形的周长c为:',rect.getPermiter()) <ipython-input-8-2f64bf52c013> in getArea(self) 4 self.height = height 5 def getArea(self): ----> 6 S = self.width*self.height 7 return S 8 def getPermiter(self): TypeError: can't multiply sequence by non-int of type 'str'
三。类的属性(变量)
实例属性:在定义初始化方法时内部通过“self。属性名”定义和访问的变量(在外部通过对象名。变量名进行访问) 类属性:在所有方法之外定义的属性(变量)
四。类的方法
1.定义:与类相关的函数,包括初始化函数和功能函数(方法) 2.类型:实例方法,类方法,静态方法 实例方法:最少包含一个对象参数,在内部通过‘self。方法’调用,在外部通过对象名。方法调用
类的继承,
1.继承:子类继承父类的方法 2.重写:子类可以重新编写子类的方法(方法名称相同) 3.多态:子类中方法名称相同但是功能不同 4.实例如下
In [16]:
class Person(): def __init__(self,name,sex,age): self.name =name self.sex =sex self.age =age def studying(self): print(self.name,'正在j203学习中') def show(self): print('姓名:{}\n性别:{}\n年龄:{}\n'.format(self.name,self.sex,self.age)) class Student(Person): def __init__(self,name,sex,age,major): super().__init__(name,sex,age) self.major =major def show(self): Person.show(self) #super().show() print('专业:{}\n'.format(self.major)) #print('专业:{}\n性别:{}\n年龄:{}\n'format(super(),show(self),self.major))
In [17]:
stu =Student('zyj','na',20,'智联一') stu.studying() stu.show()
zyj 正在j203学习中 姓名:zyj 性别:na 年龄:20 专业:智联一
六。综合案例
1.定义一个父类Student和两个子类LevelSt和PassSt,在父类中定义两个实例变量,使子类继承父类的所有属性和方法,并各自定义根据成绩计算等级和判断是否通过的方法; 2.显示由LevelSt和PassSt类对象构成的学生成绩列表,以及所有学生的成绩及姓名,并按字典排列