面向对象基础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))

day020|python之面向对象基础2的更多相关文章

  1. python开发面向对象基础:封装

    一,封装 [封装] 隐藏对象的属性和实现细节,仅对外提供公共访问方式. [好处] 1. 将变化隔离: 2. 便于使用: 3. 提高复用性: 4. 提高安全性: [封装原则] 1. 将不需要对外提供的内 ...

  2. python开发面向对象基础:接口类&抽象类&多态&钻石继承

    一,接口类 继承有两种用途: 一:继承基类的方法,并且做出自己的改变或者扩展(代码重用) 二:声明某个子类兼容于某基类,定义一个接口类Interface,接口类中定义了一些接口名(就是函数名)且并未实 ...

  3. PYTHON开发--面向对象基础入门

    面向对象 一:面向对象初级 1.思考:首先在python中,以前我们以前用到的几乎都是函数式编程,但是有时候函数式编程其中代码重复利用率太高,我们往往会把这些重复代码写进一个函数日后去调用,所以呢,今 ...

  4. PYTHON开发--面向对象基础二

    一.成员修饰符 共有成员 私有成员, __字段名 - 无法直接访问,只能间接访问 1.     私有成员 1.1  普通方法种的私有成员 class Foo: def __init__(self, n ...

  5. python开发面向对象基础:人狗大战学面向对象

    一,通过函数写人狗大战这个故事 #!/usr/bin/env python #_*_coding:utf-8_*_ #1.函数 人模子 def person(name,level,life_value ...

  6. Python:面向对象基础

    基本理论 什么是对象 万物皆对象 对象是具体的事物 拥有属性.行为 把许多零散的东西,封装成为一个整体 Python中一切东西都是对象,Python是一门特别彻底的面向对象编程语言(OOP) 其他编程 ...

  7. python 1 面向对象基础知识

    1.编码范式 编程  是程序员用特定的 语法+数据结构+算法 组成的代码来告诉计算机如何执行任务的过程 如果把编程比作习武,编程方式就是武林中的各种流派,而在编程的世界里面最常见的两大流派是:面向过程 ...

  8. 006 python的面向对象基础

    1.类 描述具有相同属性与方法的对象的集合. 2.创建类 使用class来创建一个新类,class之后为类的名称并以冒号结尾 3.程序 #!/usr/bin/python # -*- coding: ...

  9. python开发面向对象基础:组合&继承

    一,组合 组合指的是,在一个类中以另外一个类的对象作为数据属性,称为类的组合      人类装备了武器类就是组合 1.圆环,将圆类实例后传给圆环类 #!/usr/bin/env python #_*_ ...

随机推荐

  1. 思维导图软件iMindMap怎么用模板制作思维导图

    随着思维导图的不断发展,市场上相关的软件也越来越多.像XMind.MindManager等.每一款软件都有它独特的亮点.作为众多思维导图软件中的一款,iMindMap算是比较亮眼的了.现在很多人都在用 ...

  2. MySQL给临时表分组后Max函数无效

    有道练习题"取得平均薪水最高的部门的部门编号(至少给出两种解决方案)", 为什么我给临时表分组后Max函数就无效了?不分组就可以,但是无法查询到DEPTNO,MySQL版本8.0+ ...

  3. NameServer 与zk

    1.nameServer 之间互不通信,故不存在强一致性,即不同的producer看到的视图可能时不一样的,(如何保证最终一致的?) 2.nameServer维护的boker信息 发生变化时,不会像z ...

  4. PDF文件处理助手 3.3.2版本更新

    本次更新内容如下: 1.修复部分PDF在"去水印"-"文字水印"-"模式3"下识别不到的问题. 2.修复部分情况下可能无法正确加载授权的问题 ...

  5. 『CDN』让你的网站访问起来更加柔顺丝滑

    我是风筝,公众号「古时的风筝」,一个兼具深度与广度的程序员鼓励师,一个本打算写诗却写起了代码的田园码农! 文章会收录在 JavaNewBee 中,更有 Java 后端知识图谱,从小白到大牛要走的路都在 ...

  6. 解决 spring-integration-mqtt 频繁报 Lost connection 错误

    问题描述 在之前的博客介绍了如何在 Spring Boot 集成 MQTT,后面使用中没有发现问题,最近发现一直报错: Lost connection: Connection lost; retryi ...

  7. 第15.36节 PyQt(Python+Qt)入门学习:containers容器类部件QFrame框架部件介绍

    一.概述 容器部件就是可以在部件内放置其他部件的部件,在Qt Designer中可以使用的容器部件有如下: 容器中的Frame为一个矩形的框架对象,对应类QFrame,QFrame类是PyQt中带框架 ...

  8. PyQt(Python+Qt)学习随笔:QTableWidgetItem项的复选状态checkState访问方法

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 QTableWidget表格部件中的QTableWidgetItem项可以单独设置复选状态,如图所有 ...

  9. PyQt(Python+Qt)学习随笔:QTreeWidgetItem项获取项的父项或子项

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 树型部件QTreeWidget中的QTreeWidgetItem项,可以通过child(int in ...

  10. 第十一章、Designer中主窗口QMainWindow类

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.概述 主窗口对象是在新建窗口对象时,选择main window类型的模板时创建的窗口对象,如图: ...