一、类的定义(相当于多个函数集合的定义)
例9.1定义一个矩形类,包含两个数据成员(属性参数):宽度和高度;该类提供两种方法(功能函数)求面积和周长
class Rectangle: #定义一个矩形类Rectangle
#(1)定义初始化方法:
def __init__(self,width,height): #至少有一个参数self(对象属性),并且放在第一个位置
self.width = width #给属性成员赋值(将实参传递给形参)
self.height = height
#定义实体方法:
def getArea(self): #属性至少有一个参数属性
S = self.width * self.height #在内部访问属性前面要添加self.
return S #返回方法值S
def getPerimeter(self):
C =(self.width + self.height)*2
return C #返回方法值C
二、创建对象(相当于函数的调用)
rect = Rectangle(10,6) #创建类Rectangle的对象(具体指即实参)rect
print('此矩形的宽为:',rect.width) #调用(访问)实例属性,在属性前面要求添加对象名
print('此矩形的高为:',rect.height)
print('此矩形的面积为:',rect.getArea( )) #调用实例方法,在前面添加对象名.方法()
print('此矩形的周长为:',rect.getPerimeter( ))
此段代码运行的结果
三、类的属性(变量)
1、实例属性:在方法内部通过‘self.属性变量名’定义和访问的变量(在外部通过‘对象名.变量名’访问)
2、类属性:在所有方法之外定义的属性(变量)
四、类的方法(函数)
1、定义:与类相关的函数
2、类型:实例方法,类方法,静态方法
3、实例方法:至少包括一个对象参数,在内部通过'self.方法()调用',在外部通过'对象名.方法()'调用。
五、类的继承、重写与多态
1、继承:子类继承父类的方法
2、重写:子类可以重写子类的方法(方法名称相同)
3、多态:子类中方法名称相同但功能不同
4、示例如下:
#定义一个父类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))
#定义一个子类Student:
class Student(Person): #创建父类Person的一个子类Student
def __init__(self,name,age,sex,major):
super().__init__(name,age,sex) #用内置方法super().实现父类成员的继承(初始化方法)
self.major = major #添加成员(重写)
def show(self):
Person.show(self) #用‘父类名.方法()’来继承父类实例方法
print('专业:',self.major) #添加实例方法功能(重写方法)
#创建类对象
s = Student('唐美琳','19','女','数字科学')
#调用方法
s.study() #父类的方法完全继承到子类
此段代码运行结果
s.show( ) #当实例方法重写时调用子类(方法名相同,功能不同;而多态:在相同的实例方法名,但是功能不同)
此段代码运行结果