python对象
对象:数据与功能的结合体
类:多个对象相同数据与功能的结合体
在程序中需要先定义类 之后才能产生对象
定义类:
class Student: # 相同的数据 school = '清华大学' # 相同的功能 def choose_course(self): print('选课')
定义类的语法结构
1.class是定义类的关键字
2.Student是类的名字
类名在python中推荐首字母大写
3.缩进代码块
对象相同的数据和功能
强调:在类中定义的函数我们称之为>>>:方法
产生对象:类名加括号(实例化)
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')
1.为什么调用的时候形参self不需要传值
2.形参self到底是谁
对象在调用类里面定义的方法的时候
会自动将对象本身当成第一个位置参数传入
形参self指代的就是一个个对象
obj1.choose_course() obj2.choose_course() obj3.choose_course() print(obj1.name) obj1.name = 'jasonNB' print(obj1.name) obj1.xxx = 'ooo' print(obj1.xxx)
1.父类:多个类相同的数据和功能的结合体
2.继承:一个类可以继承多个父类并拥有多个父类里面所有的东西
3.对象查找数据和方法的顺序
先从对象自身开始找 再去产生对象的类里面找 再去父类里面找
(从近到远)
异常的分类
1.语法错误
不被允许的 出现了应该立刻修改
2.逻辑错误
可以允许发生的(bug)
语法结构
try: 被检测的代码 except 错误类型 as 变量名: 分支代码(变量名指代的就是错误的具体信息)
错误类型:万能异常Exception/BaseException
1.异常在程序中尽量少用
2.try检测的代码要尽可能的少
其他关键字:
else try被检测的代码没有异常的情况下会走 finally 无论是否有异常最终都会执行