python之面向对象
Python中一切皆对象
对象
数据与功能的结合体。
类
多个对象相同数据与功能的结合体。
PS:在程序中需要先定义类,之后才能产生对象。

定义类
class Student:
# 相同的数据
school = '清华大学'
# 相同的功能
def choose_course(self):
print('选课')
定义类的语法结构
class
定义类的关键字。
Student
类的名字:类名在python中推荐首字母大写。
缩进代码块
对象相同的数据与功能。
PS:在类中定义的函数称之为“方法”。
产生对象
就是类名加括号(实例化)
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__)

调用属性和方法(句点符)
print(obj1.school) print(obj2.school) print(obj3.school)
print(obj1.choose_course()) print(obj2.choose_course()) print(obj3.choose_course())

独有的数据
定义类
class Student: school = '软饭学院' # 让对象具有独有的数据 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('jason', 18, 'male') # 每次都会产生一个新的对象
obj2 = Student('kevin', 28, 'male')
obj3 = Student('tony', 38, 'female')
obj1.choose_course()
obj2.choose_course()
obj3.choose_course()

self相关
为什么调用的时候形参self不需要传值
对象在调用类里面定义的方法的时候,就会自动将对象本身当成第一个位置参数传入。
形参self到底是什么?
self指代的就是一个个对象。
print(obj1.name) obj1.name = 'jasonNB' print(obj1.name) obj1.xxx = 'ooo' print(obj1.xxx)

核心补充
父类
多个类相同的数据和功能的结合体。
继承
一个类可以继承多个父类并拥有多个父类里的东西。

对象查找数据和方法的顺序
先从对象自身开始找,再去对象的类里面找,然后再到父类里去找。

异常捕获
异常分类
语法错误
不被允许的,出现了应该立刻修改。
逻辑错误
可以允许发生的,也就是常说的BUG。

语法结构
try:
被检测的代码
except 错误类型 as 变量名:
分支代码(变量名指代的就是错误的具体信息)
# 万能异常Exception/BaseExceptions

使用规则
1.异常在程序中尽量少用。
2.try检测的代码要尽量的少。
其他关键字
else
try检测的代码没有异常的情况下会走。

finally
无论是否有异常最终都会执行。


浙公网安备 33010602011771号