面向对象
目录
- 面向对象
- 访问数据和功能
- 添加独有的数据
- 核心补充
- 异常捕获

面向对象
对象的概念
对象:数据与功能的结合体
#前提
在程序中需要先定义类,之后才能产生对象

类的概念
类:多个对象相同数据与功能的结合体

定义类
定义类的语法结构
1.class是定义类的关键字
2.Student是类的名字
类名在python中推荐首字母大写
3.缩进代码块
对象相同的数据和功能
#在类中定义的函数称之为'方法'
代码
class Student: #相同的数据 school = '清华大学' 相同的功能 def choose_course(self): print('选课')
产生对象
class Student: school = '清华大学' def choose_course(self): print('选课') # 每次都会产生一个新的对象 obj1 = Student() obj2 = Student() obj3 = Student() print(id(obj1), id(obj2), id(obj3))

访问数据和功能
查看内部具有的属性和方法
class Student: school = '清华大学' def choose_course(self): print('选课') obj1 = Student() # 每次都会产生一个新的对象 obj2 = Student() obj3 = Student() print(id(obj1), id(obj2), id(obj3)) # 查看内部具有的属性和方法 print(Student.__dict__) print(obj1.__dict__) print(obj2.__dict__) print(obj3.__dict__)

调用属性和方法
class Student: school = '清华大学' def choose_course(self): print('选课') obj1 = Student() # 每次都会产生一个新的对象 obj2 = Student() obj3 = Student() print(id(obj1), id(obj2), id(obj3)) # 采用句点符 print(obj1.school) print(obj2.school) print(obj3.school) print(obj1.choose_course()) print(obj2.choose_course()) print(obj3.choose_course())

独有的数据
# 定义类 class Student: school = '上海xx学院' # 让对象具有独有的数据 def __init__(self, name, age, gender): self.name = name self.age = age self.gender = gender # 绑定给对象的方法(绑定方法):对象来调用自动将对象当作参数传入 def choose_course(self): print('%s正在选课' % self.name) # 产生对象:类名加括号(实例化) obj1 = Student('ben', 18, 'male') # 每次都会产生一个新的对象 obj2 = Student('peter', 20, 'male') obj3 = Student('jerry', 22, 'female') obj1.choose_course() obj2.choose_course() obj3.choose_course()

小疑问
1.为什么调用的时候形参self不需要传值?
2.形参self到底是谁?
""" 对象在调用类里面定义的方法的时候,会自动将对象本身当成第一个位置参数传入 形参self指代的就是一个个对象 """
对象的其它操作
# 定义类 class Student: school = '上海xx学院' # 让对象具有独有的数据 def __init__(self, name, age, gender): self.name = name self.age = age self.gender = gender # 绑定给对象的方法(绑定方法):对象来调用自动将对象当作参数传入 def choose_course(self): print('%s正在选课' % self.name) # 产生对象:类名加括号(实例化) obj1 = Student('ben', 18, 'male') # 每次都会产生一个新的对象 obj2 = Student('peter', 20, 'male') obj3 = Student('jerry', 22, 'female') print(obj1.name) obj1.name = 'benNB' print(obj1.name) obj1.xxx = 'yyy' print(obj1.xxx)

核心补充
1.父类
多个类相同的数据和功能的结合体

2.继承
一个类可以继承多个父类并拥有多个父类里面所有的东西

3.对象查找数据和方法的顺序
对象自身开始找>>>产生对象的类里面找>>>去父类里面找
异常捕获
异常的分类 1.语法错误 不被允许的 出现了应该立刻修改 2.逻辑错误 可以允许发生的,类似于bug

语法结构
try: 被检测的代码 except 错误类型 as 变量名: 分支代码(变量名指代的就是错误的具体信息)
#万能异常 Exception/BaseException
注意事项
1.异常在程序中尽量少用
2.try检测的代码要尽可能的少
其他关键字
else
#try被检测的代码没有异常的情况下会走
finally #无论是否有异常最终都会执行


浙公网安备 33010602011771号