美文网首页
Day15-复习!!

Day15-复习!!

作者: 周zau1 | 来源:发表于2018-08-06 20:00 被阅读27次

1.pygame应用


标准程序走一遍···

import pygame

# 1.初始化pygame
pygame.init()
# 2.创建游戏窗口
# set_mode((宽度,高度))
screen = pygame.display.set_mode((1024, 600))

# 3.游戏循环(死循环)
while True:
# 检测事件
for event in pygame.event.get():
     # 检测窗口上的关闭按钮是否被点击
     if event.type == pygame.QUIT:
     # 退出游戏
           print('关闭按钮被点击')
           exit()

2.面向对象


什么是类:
对拥有相同属性和功能的对象的封装
类是抽象
类中相同的属性的值是不能确定的

什么是对象:
对象就是类的实例
对象是具体
对象的属性是确定的

a.怎么声明类

class 类名(父类):
    类的说明
    属性
    方法

b.通过类创建对象
对象名 = 类名() --> 构造方法
调用构造方法创建对象的时候,会自动调用类的init方法,来给对象的属性赋初值

c.__init__方法
不用自己调用;参数有哪些,参数需不需要默认值,全看在创建对象的时候是否需要给相应的属性赋初值和是否必须赋初值

d.关于属性
对象属性:(对象属性,不同的对象对应的值可能不一样,这样的属性可以声明成对象属性)
对象来使用
增删改(查)

  • 查(获取属性)
    方法一:对象.属性 (如果属性不存在,会报错)
    方法二:对象.__ getattribute __ (属性名) 和 getattr(对象, 属性名, 默认值)
    !!如果设置了默认值,那么当属性不存在的时候不会报错,并且返回默认值。
  • 改(修改属性的值)
    方法一: 对象.属性 = 新值
    方法二:对象.__ setattr (属性名,新值) 和 setattr(对象,属性名,新值)
  • 增加(增加对象属性)
    对象.属性 = 值(属性不存在)
    注意:属性是添加给对象的,而不是类的
  • 删(删除对象的属性)
    方法一: del 对象.属性
    方法二:对象. delatter __(属性名)
    注意:删除属性也是删的具体某个对象的属性。不会影响这个类的其他对象
    __slots__:一旦给类设置了这个属性的值,对象的__dict__属性就没有用了

内置类属性(对象\类.__dict__,
类.__name__(获取类的类名),
对象.__class__(获取对象属于哪个类),
类.__doc__,
类.__base__(类的父类, 返回的是列表))

私有属性和假的私有属性
getter\setter : 想要在获取对象属性的值前,或者是给属性赋值前干点别的事情

@property
def 属性名(self):
    return 值

@属性名.setter
def 属性名(self, value):
    self.属性 = value

e.类的方法
对象方法:
自带一个self参数,一般要通过对象去调用

类方法:
1.使用@classmethod修饰
2.自带一个cls参数,并且这个参数不用传参,谁来调用这个方法,cls就指向谁
3.类方法要通过类来调用

静态方法:
1.使用@staticmethod修饰
2.没有默认参数
3.静态方法要通过类来调用

f.继承(支持多继承,但是一般不使用)
让子类直接拥有父类的所有的属性和方法(私有的除外), __storts__值不会被继承

重写:(多态)
继承后,子类可以拥有除父类继承的内容以外的其他的内容

关于方法
1).在子类中可以直接添加其他的方法
2).重写:
a.完全重写
重新实现从父类继承下来的方法,重写后,子类再调用这个方法的时候,就调用子类的
b.保留父类实现的功能,再添加新的功能

对象和类调用方法的过程:先看当前类是否存在这个方法,没有才看父类有没有这个方法;
如果父类没有就看父类的父类有没有,直到找到基类(object)为止

运算符重载
1.重载:一个类中可以有多个名字相同的方法,但是参数不一样,就叫重载。python中不支持
2.运算符重载(重新定义运算符运算的过程)
大于和小于符号只需要重载其中的一个,另外一个的结果,直接是重的结果取反

def __gt__(self, other):
        # 比较对象1>对象2的时候是比较的他们的height属性
        return self.height > other.height
        # return self.age > other.age
        # return id(self) > id(other)

    # 重载:<
    def __lt__(self, other):
        return self.age < other.age

    # 重载: +
    def __add__(self, other):
        return self.age + other.age

    # 重载: -
    def __sub__(self, other):
        return self.height - other.height

3.正则表达式


a.符号(. \w \d \s \b \W \D \S \B [] [^] + * ? {N} {N,} {N,M} () | 等)
b.re模块中的方法:匹配、查找、切割、替换

# 1.compile(正则字符串) 将正则表达式字符串转换成正则表达式对象
    # 转换成正则表达式对象后,可以通过对象调用相关的方法
    re_obct = re.compile(r'\w{6,12}')
    print(re_obct.fullmatch('user_234'))
    print(re.fullmatch(r'\w{6,12}', 'user_234'))

    # 2.fullmatch(正则表达式, 字符串) 完全匹配,从字符串开头匹配到结尾
    # 返回值是匹配对象,如果不成功返回None
    match = re.fullmatch('\w{3}', 'h3s')
    print(match)
    # a.获取匹配到的结果
    print(match.group())
    # b.获取匹配到的范围
    print(match.span())
    # c.获取匹配到的开始下标和结束下标
    print(match.start(), match.end())
    # d.获取被匹配的字符串(原字符串)
    print(match.string)
    # 应用:判断一个字符串是否是某种字符串(判断账号、密码是否符合要求等)

    # 3.match(正则表达式,字符串) 不完全匹配,从字符串开头开始匹配,匹配到正则表达式对应的范围为止
    # 返回值是匹配对象,如果匹配失败返回None
    match = re.match('\w{3}', 'adahfjfksj')
    print(match)
    print(match.group())
    print(match.string)
    # 应用:判断一个字符串是否以某种字符串开头

    # 4.search(正则表达式,字符串) 在指定的字符串中查找某种字符串(以正则表达式来描述),如果有多个满足条件的,只匹配第一个
    # 返回值是匹配对象,若找不到则返回None
    print(re.search(r'\d{2,}[a-z]', 'sh23n--877m0899'))
    # 应用:判断一个字符串中是否包含某种字符串

    # 5.findall(正则表达式,字符串) 去获取指定字符串中满足正则条件的所有的子串
    # 返回值是列表,列表中是符合要求的字符串。没有满足要求的子串就返回[]
    result = re.findall(r'\D\d+\D', 'as8d7ff8a7asd7')
    print(result)
    # 注意:在通过正则表达式获取子串的时候,可以通过在正则表达式中添加括号,来约束获取的内容(只获取括号中匹配到的内容)
    #       匹配的时候还是按原正则表达式去查找
    # 应用:字符串提取

    # 6.finditer(正则表达式,字符串) 用法和findall一样,只是返回值的类型不一样
    # 返回一个迭代器,迭代器中的内容是匹配对象
    # 注意:()捕获部分无效
    result = re.finditer(r'\D\d+\D', 'as8d7ff8a7asd7')
    print(result.__next__())
    print(result.__next__())

    # print('ahsj27jkkaj7js8jsj'.split('sj')
    # 7.split(正则表达式,字符串) 按正则表达式匹配到的字符串进行切割
    # 返回值是列表,列表元素就切割后被分段的字符串
    result = re.split(r'\d+', 'ahsj27jkkaj7js8jsj')
    print(result)

    # 8.sub(正则表达式, 新字符串, 原字符串) 在原字符串中查找符合正则的子串,替换成新的字符串
    # 返回值是替换后的字符串
    """将制定字符串中所有的'sb'替换成'*'"""
    str1 = '你好sb,你全家都是sb,cnm狗币傻东西'
    result = re.sub(r'sb|傻|cnm', '**', str1)
    print(str1, result)

相关文章

  • Day15-复习!!

    1.pygame应用 标准程序走一遍··· 2.面向对象 什么是类:对拥有相同属性和功能的对象的封装类是抽象类中相...

  • 21天女神养成记 day15

    Day15-【21天女神养成记-你知道你是什么脸型吗?】-邸红敏-2018.12.22(倒计时7天) 脸型共分为标...

  • day15-软件管理-笔记

    Day15-软件管理rpm,yum 导读 今日内容1.什么是rpm?rpm软件包的组成部分有哪些?2.如何获取rp...

  • 62号 #百日生涯营# D15恋爱日

    百日营的Day15-恋爱日 【百日生涯营DAY15】 恋爱日:爱情的发展可以分为3个阶段:刺激阶段,价值阶段,角色...

  • #30天专注橙长计划#数学魔术Day15–魔术练习

    #30天专注橙长计划#数学魔术Day15-魔术练习 下周数学组教研活动,内容之一是暑期学习分享。我们四位到北京学习...

  • day15-总结

    pygame的鼠标事件 两个实例:

  • Day15-作业

    定义一个学生类。有属性:姓名、年龄、成绩(语文,数学,英语)[每课成绩的类型为整数]方法: a. 获取学生的姓名:...

  • day15-作业

    1、定义一个学生类。有属性:姓名、年龄、成绩(语文,数学,英语)[每课成绩的类型为整数]方法: a. 获取学生的姓...

  • Day15-作业

    ⼀.获取字符串中:a.所有的正整数 ['12', '13', '43', '257']b.所有的负整数 ['-5'...

  • day15-笔记

    1.正则表达式的符号 正则表达式:用来做字符串查找、匹配、切割用的一种工具 python对正则表达式的支持:提供了...

网友评论

      本文标题:Day15-复习!!

      本文链接:https://www.haomeiwen.com/subject/hvogvftx.html