• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
草卆鱼
博客园    首页    新随笔    联系   管理    订阅  订阅

8/31

内容概要

  • python面向对象
  • 异常处理

详细讲解

面向对象:一切皆对象

对象:
    数据与功能的结合体
    
类:
    多个对象相同数据与功能的组合
    好比几个英雄的共同点被单独拿出来放在一起
# 在程序中需要先定义类  才能产生对象

class Student: # 定义类的时候后面类的名字一般首字母大写
    # 然后放入相同的数据
    school = '雄英学院'
    # 然后再放入相同的功能
    def choose(self):  # 这边self是必要的
        # 功能一般就是个函数,放在类里面叫方法
        print('选课')
'''
类的语法结构
	关键字:class
	后面放类的名字首字母约定俗成大写
		缩进的代码块
		是对象相同的数据和一些功能
强调:在类中定义的函数我们称之为>>>方法
'''
# 类要产生对象就把类看作一个变量值去赋给对象,但也只能是看作马上就知道为什么了
stu_1 = Student()  
stu_2 = Student()
stu_3 = Student()  # 注意类每次产生的对象是新的可以通过下面方式判断
print(id(stu_1), id(stu_2), id(stu_3))

访问数据和功能

# 查看内部具有的属性和方法
print(Student.__dict__)
print(stu_1.__dict__)  # 对象里是空的

# 调用属性和方法(句点符.)是不是很熟悉
print(stu_2.school)
print(stu_3.choose)

对象的独有数据

class Student: 
    school = '雄英学院'
    # 现在这边可以添加对象所独有的数据
    def __init__(self, name, age, gender):
        # self还是一样必不可少,后面可以理解为形参
        self.name = name  # 这些都是固定格式 
        self.age = age
        self.gender = gender  # 绑定给对象的方法(绑定方法):对象来调用自动将对象当作参数传入
    def choose(self):  # 这边self和上面一样
        print('选课')
stu_1 = Student('leo', 22, 'male')  
stu_2 = Student('ace', 19, 'female')
stu_3 = Student('nick', 18, 'male')

'''
Q: 那为什么调用的时候那个self不需要传值了呢?
   这个神秘的self究竟是谁?

A: 对象在调用类里面定义好的方法的时候  会自动将对象本身当成第一个位置参数传入
    没第一个位置参数self是谁也就不言而喻
    形参self指代的就是那些一个个的对象
'''
接下来可以看到对于对象的赋值和字典很类似
print(stu_1.name)  # 先看看原来写的是什么样
stu_1.name = 'leoNB'
print(stu_1.name)  # 这里再看一下打出来的东西是被修改了
# 说明这边和字典一样可以通过里面有的变量名更改变量值
# 那如果没有这个变量名呢?请看
stu_1.hobby = 'bodybuilding'
print(stu_1.hobby)  # 结果也是像字典那样直接创建了这对数据

核心补充

1.父类:多个类相同的数据和功能的结合体
2.继承:一个类可以继承多个父类并拥有多个父类里面所有的东西
3.对象查找数据和方法的顺序
	先从对象自身开始找 再去产生对象的类里面找 再去父类里面找  这个和名称空间很想反正就是遵循就近原则 从小范围找到大范围
# 接下来做个简单的举例
class Person(object):   # 定义一个父类
 
    def talk(self):    # 父类中的方法
        print("person is talking....")  
 
 
class Chinese(Person):    # 定义一个子类, 继承Person类
 
    def walk(self):      # 在子类中定义其自身的方法
        print('is walking...')
 
c = Chinese()  # 创建对象 
c.talk()      # 调用继承的Person类的方法
c.walk()     # 调用本身的方法

异常捕获

异常分类
	1.语法错误
    	不被允许  出现了应该马上修正
    2.逻辑错误
    	可以允许发生的(bug)

所以这里就会用到一个常用的东西来规避报错
try:
    被检测的代码
except 错误类型 as 变量名:  # 错误类型一般就填Exception
    分支代码(变量名指代的就是错误的具体信息)
# Exception和BaseException是万能异常检测
注意:
    1.这个功能尽量少用
    	对于实际功能会有些许不利
    2.try中被检测代码的部分尽可能要少
    	这样能把错误范围缩小

其他关键字:
	else
		try被检测的代码没有异常的情况下会走
    finally
    	无论是否有异常最终都会执行 
# 在网络爬虫中这个东西会大显身手,毕竟有些网络波动不可避免

posted @ 2021-08-31 15:09  草卆鱼  阅读(41)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3