zoukankan      html  css  js  c++  java
  • day020|python之面向对象基础2

    面向对象基础2

    7 对象与类型

    7.1 类即类型

    7.1.1 变量的三个指标

    • 类型
    • id
    a = 10
    b = False
    c = [1, 2, 3]
    d = {'name': 'ccc', 'age': 18}
    

    7.1.2 变量类型

    print(type(a))  # <class 'int'>
    print(type(b))  # <class 'bool'>
    print(type(c))  # <class 'list'>
    print(type(d))  # <class 'dict'>
    
    • 类即类型(type看的是这个对象的类,这个变量是哪个类的对象)

    7.2 list.append()方法原理

    l = [1, 2, 3]
    # 列表追加值,对象来调,是对象的绑定方法
    l.append(4)
    
    # 使用另外一种方式实现列表追加
    # 普通函数,有几个值就要传几个值
    list.append(l, 5)
    print(l)  # [1, 2, 3, 4, 5]
    
    dic = {'name': 'ccc'}
    
    # 对象来调用
    # name = dic.get('name')  # ccc
    # 类来调用
    name = dict.get(dic, 'name')  # ccc
    print(name)
    

    8 对象的高度整合

    8.1 通过面向过程操作爬取视频

    8.1.1 步骤分析

    # 爬取一个视频网站,把视频的地址解析出来
    
    # 面向过程实现
    # 当屏幕拉到最底部(点击加载更多),浏览器向后端发了一个请求,获取到数据
    # xhr:只看ajax请求
    # 获取网站数据
    # https://www.pearvideo.com/category_loading.jsp?reqType=5&categoryId=1&start=0
    
    import requests  # 模拟发送请求(像浏览器一样)
    import re  # 导入正则模块
    
    # 定义一个获取该网站内容的函数
    def get_text(url):
        res = requests.get(url)
        return res.text
    
    # 解析,获得解析出来的地址
    def parser_video_url(text):
        video_url_list = []
        re_gex = '<a href="(.*?)" class="vervideo-lilink actplay">'
        video_list = re.findall(re_gex, text)  # 去里面找符合规则的所有东西
        # print(video_list)
        # 例如[video_1712915, video_1712915, video_1712915...]
        for video in video_list:
            video_url_list.append('https://www.pearvideo.com/' + video)
        return video_url_list
    
    text = get_text('https://www.pearvideo.com/category_loading.jsp?reqType=5&categoryId=1&start=0')
    video_list = parser_video_url(text)
    print(video_list)
    

    8.1.2 总结

    import requests
    import re
    # 获取网页内容
    res = requests.get('https://www.pearvideo.com/category_loading.jsp?reqType=5&categoryId=1&start=0')
    re_gex = '<a href="(.*?)" class="vervideo-lilink actplay">'
    video_list = re.findall(re_gex, res.text)
    video_list_url = []
    for video in video_list:
        video_list_url.append('https://www.pearvideo.com/' + video)
    print(video_list_url)
    

    8.2 通过面向对象实现操作爬取视频

    # 使用面向对象的方式
    import requests
    import re
    
    class Video:
        def __init__(self, url):
            # 初始化的时候,把url放到对象身体里
            self.url = url
            self.video_url_list = []
            self.text = ''
    
        def get_video_list(self):
            res = requests.get(self.url)
            self.text = res.text
            re_gex = '<a href="(.*?)" class="vervideo-lilink actplay">'
            video_list = re.findall(re_gex, self.text)  # 去里面找符合规则的所有东西
            for video in video_list:
                self.video_url_list.append('https://www.pearvideo.com/' + video)
    
    video = Video('https://www.pearvideo.com/category_loading.jsp?reqType=5&categoryId=1&start=0')
    print(video.text)  # 空的
    print(video.video_url_list)  # 空的
    
    video.get_video_list()
    print(video.get_video_list)
    
    # 拿到请求地址的页面内容
    print(video.text)
    

    9 面向对象基础实战之英雄联盟

    9.1 基础版

    # 亚瑟(战士)
    class Arthur:
        def __init__(self, nickname):
            self.nickname = nickname
            self.blood = 420  # 基础血量
            self.aggressivity = 25  # 基础攻击值
            self.armor = 15  # 基础防御值
            self.money = 300  # 默认金币
    
        def attack(self, obj):
            value = self.aggressivity - obj.armor
            obj.blood -= value
            print("亚瑟(%s) 攻击了%s一下,%s掉血%s" % (self.nickname, obj.nickname, obj.nickname, value))
    
    
    # 后裔(射手)
    class HouYi:
        def __init__(self, nickname):
            self.nickname = nickname
            self.blood = 275  # 基础血量
            self.aggressivity = 35  # 基础攻击值
            self.armor = 8  # 基础防御值
            self.money = 300  # 默认金币
    
        def attack(self, obj):
            value = self.aggressivity - obj.armor
            obj.blood -= value
            print("后裔(%s) 攻击了%s一下,%s掉血%s" % (self.nickname, obj.nickname, obj.nickname, value))
    
    ys = Arthur('ccc')
    hy = HouYi('yyy')
    
    while True:
        if ys.blood <= 0 or hy.blood <= 0:
            print('亚瑟血量:', ys.blood)
            print('后裔血量:', hy.blood)
            print("游戏结束")
            break
        ys.attack(hy)
        hy.attack(ys)
        print('亚瑟(%s)血量还剩%s' % (ys.nickname, ys.blood))
        print('后裔(%s)血量还剩%s' % (ys.nickname, hy.blood))
    
  • 相关阅读:
    QuickSort
    Java细节
    Java
    Prime
    apache和tomcat有什么不同,为什么要整合apache 和tomcat?
    java线程面试题及答案
    Struts2中的ModelDriven机制及其运用
    Java中instanceof关键字的用法总结
    spring特点与好处
    spring与struts有什么区别?
  • 原文地址:https://www.cnblogs.com/caojiaxin/p/14175701.html
Copyright © 2011-2022 走看看