11.1 定义类和对象
11.1 定义类和对象
1. 面向对象编程
-
面向过程编程(思想)
优点:逻辑清晰
缺点:扩展性差,因为上一个函数的输出是下一个函数的输入 -
面向对象编程(思想)
python中一切皆是对象,对象就是特征和技能的结合体。
面向对象编程定义出一个个鲜明独特的对象,然后通过对象的交互编程。
优点:扩展性非常强。
缺点:逻辑非常复杂。 -
面向过程编程与面向对象编程如何选择:
写某各项目时,选适合这个项目的;二者只是编程思想不同,没有好坏之分
2. 定义类和对象
(1)类的定义
-
类:分类/类别
-
类的概念:一系列具有共同特征或技能的对象。在类中,特征是属性,技能是方法(函数)。
-
学生类:
- 学校:school
- 技能:选课
-
类与对象先后顺序
(1)现实世界先有对象,再有类。
(2)在python中先有类再有对象。
#语法
class 类名(驼峰体:单词首字母大写):
多个特征,多个技能
def f1():
school='oldboy'
addr='shanghai'
1/0 #不调用函数不报错
class OldBoyStudent:
school='oldboy'
addr='shanghai'
# 1/0 #类定义阶段,会运行代码,报错。
def choose_course(self):
print('is chosing course')
# 1/0 #函数定义阶段只检测语法,不执行代码;因此不在这里报错
oldboystudenct_dict=OldBoyStudent.__dict__ #获取类的属性和特征,双下划线开头的方法会在某种情况下自动触发。
print(oldboystudenct_dict['school'])
print(oldboystudenct_dict['choose_course'](11))
oldboy
is chosing course
None
(2) 对象的定义
#定义一个对象
#以选课系统为例,选课系统老师和学生使用
#定义学生对象
#姓名:coco
#学号:2025111
#学校:school
#技能:选课 (技能定义为函数)
#姓名:mike
#学号:2025222
#学校:school
#技能:选课,读书
#姓名:Jane
#学号:2025333
#学校:school
#技能:选课,唱歌
#姓名:teacher_Li
#学校:school
#技能:教课
#姓名:teacher_zhang
#学校:school
#技能:教课
class OldBoyStudent:
school='oldboy'
addr='shanghai'
def choose_course(self):
print('is chosing course')
#创造对象的过程(实例化对象)
stu1=OldBoyStudent()
print(1,stu1.school)
print(1,stu1.choose_course())
stu2=OldBoyStudent()
stu3=OldBoyStudent()
1 oldboy
is chosing course
1 None
浙公网安备 33010602011771号