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
    无论是否有异常最终都会执行

 

posted @ 2021-08-31 16:05  雾雨黑白  阅读(61)  评论(0编辑  收藏  举报