25.面向对象编程(详见面向对象编程.html文件)
(1)类的定义(相当于多个函数集合的定义)
(2)创建类对象(相当于函数的调用)
(3)类的属性(变量)
a、实例属性:在方法内部通过‘self.属性变量名’定义和访问的变量(在外部通过‘对象名.变量名’名访问)
b、类属性:再多也方法之外定义的属性(变量)
(4)类的方法(函数)
a、定义:与类相关的函数
b、类型:实例方法、类方法、静态方法
c、实例方法:至少包含一个对象参数,在内部通过‘self.方法()’调用,在外部通过‘对象名.变量名’名访问
(5)类的继承、重生与多态
a、继承:子类继承父类的方法
b、重写:子类可以重写子类的方法(方法名称相同)
c、多态:方法名称相同但功能不同
26.字典(dict):
(1)是一个无需的可变序列,其元素包含两个部分:键(key):值(value),中间使用英文冒号:分隔开,元素中间用逗号,隔开,整个元素放在大括号{}里面,如果键相同的键值对取最后一个元素。
(2)创建:dictname={key1:value1,key2:value2,...keyn:valuen}
(3)方法(函数):
添加(修改)元素:dictname[键]=值
读取元素:dictname[键] dictname.items()
(4)删除元素:
dictname.pop(键)
del dictname(键)命令:删除字典里指定的元素,或者整个字典
dictname.clear():删除字典里所有的元素,但保留字典本身
27列表推导式:
(1)表达式for in list(range())
(2)表达式for in list(range()) if满足的条件
一、类的定义(相当于多个函数集合的定义)
例8.1定义一个矩形类,包含两个数据成员(属性参数):宽度和高度;该类提供两种方法(功能函数): 求面积和周长
class Rectangle: #定义一个类Rectangle def __init__(self,width,height): #定义初始化方法,至少有一个参数self #定义初始化方法 self.width = width #给实例属性(形参)赋值,或者说定义参数变量属性 self.height = height #定义其他功能函数、 def getArea(self): #定义求面积函数, S = self.width * self.height #定义变量S存放面积 return S def getPerimeter(self): #定义求周长函数(方法) C = (self.width + self.height)*2 #定义变量C存放周长值 return C
二、创建类对象(相当于函数的调用)
rect = Rectangle(3,5)
print('矩形的宽:',rect.width) print('矩形的高:',rect.height) print('矩形的面积:',rect.getArea()) #方法后面积的添加() print('矩形的周长:',rect.getPerimeter())
矩形的宽: 3 矩形的高: 5 矩形的面积: 15 矩形的周长: 16
三、类的属性(变量)
1、实例属性:在方法内部通过‘self.变量名’
四、类的方法(函数)
1、定义:与类相关的函数
2、类型:实例方法,类方法,静态方法
3、实例方法:至少包含一个对象参数,在内部通过‘self.方法’调用
五、类的继承与重写
1、继承:子类继承父类的方法
2、重写:子类可以重写子类的方法(方法名称相同)
3、示例如下:
class Person: #(1)定义一个父类Person #定义初始方法 def __init__(self,name,age,sex): self.name = name self.age = age self.sex = sex #定义实例方法: def working(self): print(self,self.name,'正在工作') def show(self): print('姓名:{}\n年龄:{}\n性别:{}\n'.format(self.name,self.age.self.sex)) #(2)定义一个子类Student: class Student(Person): #定义一个子类Student def __init__(self,name,age,sex,major): super().__init__(name,age,sex) #用内置函数super()继承父类相关属性 self.major = major #添加子类属性 #定义实例方法: def show(self): Person.show(self) #用Person.方法继承父类方法 print('专业:',self.major) #添加子类方法(重写) #(3)创建对象(对象实体化) s = Student(name = '张三',age = '20',sex = '男',major = '智能互联网络') s.working() s.show()
<__main__.Student object at 0x03AEA3F0> 张三 正在工作
六、综合案例分析:
1、定义一个父类Student和两个子类LevelSt和PassSt,在父类中定义两个实例变量和5个方法,使子类继承父类的所有属性和方法,并各自定义根据成绩计算等级和判断是否通过的方法;同时,代码存储在student.py文件中。
2、显示由Levelst和PassSt类对象构成的学生成绩列表,以及所有学生名字和成绩,并按字典排序
#student.py #定义student父类 class Student: def __init__(self,name='',grade=0): self.name=name self.grade=grade def