一·类的定义(相当于多个函数集合的定义)
例9.1定义一个矩形类,包含两个数据成员(属性参数):宽度和高度:该类提供两种方法(功能函数):求面积和周长
In [1]:
class Rectangle: #定义一个矩形类Rectangle #(1)定义初始化方法(所有的类都有一个初始化方法) def __init__(self,width,height): #第一个属性参数必须是self(类对象) self.width = width #给实例属性赋初值(将实参传递给形参) self.height = height #(2)定义实例方法: def getArea(self): #至少要有一个参数属性self S = self.width * self.height #求面积值并赋给变量S,用self.属性访问 return S #返回S值 def getPerimeter(self): C = (self.width + self.height) * 2 return C
二·创建类对象(相当于函数的调用)
In [2]:
rect = Rectangle(10,6) #创建Rectangle的对象(具体值即实参)rect
In [3]:
print('此矩形的宽为:',rect.width) #在外部调用(访问)属性要用对象名.属性 print('此矩形的高为:',rect.height) print('此矩形的面积为:',rect.getArea()) #调用(访问)方法一定带括号 print('此矩形的周长为:',rect.getPerimeter())
此矩形的宽为: 10 此矩形的高为: 6 此矩形的面积为: 60 此矩形的周长为: 32
三·类的属性(变量)
1·实例属性:在方法内部通过‘self.属性变量名’定义和访问变量(在外部通过‘对象名.变量名’名访问)
2·类属性:在所有方法之外定义的属性(变量)
四·类的方法(函数)
1·定义:与类相关的函数
2·类型:实例方法,类方法,静态方法
3·实例方法:至少包含一个对象参数self放在第一个,在内部通过‘self.方法()’调用(访问),在外部通过‘对象名.方法()’调用(访问)
五·类的继承,重写与多态
1·继承:子类继承父类的方法
2·重写:子类可以重写子类的方法(方法名称相同)
3·多态:子类中方法名称相同但功能不同
4·示例如下:
In [5]:
#定义一个父类Person class Person: #(1)初始化方法 def __init__(self,name,age,sex): self.name = name self.age = age self.sex = sex #(2)实体方法: def study(self): print(self.name,'正在冲出冥界!') def show(self): print('姓名:{}\n年龄:{}\n性别:{}\n'.format(self.name,self.age,self.sex))
In [6]:
#定义一个子类Student class Student(Person): #定义一个父类为Person的子类Student #(1)初始方法: def __init__(self,name,age,sex,major): super().__init__(name,age,sex) #用super()内置函数,继承父类的初始方法 self.major = major #添加类成员属性(重写) #(2)实例方法 def show(self): #方法的重写 Person.show(self) #用“父类名.方法”继承父类方法 print('专业:',self.major) #添加方法功能
In [8]:
s = Student('科比布莱恩特','42','男','职业篮球运动员') #创建类Student的对象s
In [9]:
s.study() #调用父类方法 s.show() #调用?的方法
科比布莱恩特 正在冲出冥界! 姓名:科比布莱恩特 年龄:42 性别:男 专业: 职业篮球运动员
综合实例:P184_9.4
In [ ]:
class Student: def __init__(self,name): self.name = name def set_major(self,major): self.major = major def having_class(self,course_name): print(self.name,"正在上课,课程为:",course_name)