Python第四周之多重继承、正则表达式、re的方法、git云储存

多重继承

  1.一个类继承多个类,而多个父类又有公共的父类,(菱形继承/钻石继承)

  2.如果一个类有多个父类,那么在搜索属性和方法时,搜索的依据是C3算法。

  3.这是Python3的改进,在此之前的算法是深度优先搜索算法 DFS

注意:避免使用多重继承,如果必须要用,尽量只继承亲爸的,后爸的不继承属性,且方法写为抽象类方法。 学会辨别子类继承的是哪个父类。

from abc import ABCMeta, abctractmethod


class Father(object):
    
    def __init__(self, name):
        self._name = name 

    def drink(self):
        print(self._name + '正在喝酒')

class Monk(object, metaclass=ABCMeta):
    
    @abstractmethod
    def eat_vegetable(self):
        pass

class Art(object, metaclass=ABCMeta):

    @abstractmethod
    def play_piano(self):
        pass

class Son(Father, Monk, Art):

    def __init__(name, nicename, art_name):
        Father.__init__(self, name)
        self._nicename = nickname
        self._art_name = art_name

    def eat_vegetable(self):
        print(self._nickname + '正在吃素'def play_piano(self):
        print(self._art_name + '正在弹琴')

def main():
    son = Son('曹宇', '曹大师', '曹大家')
    son.drink()
    son.eat_vegetable()
    son.play_piano()

if __name__ == '__main__':
    main()
        
    
            

正则表达式

  工具 -- 定义字符串的匹配模式

  w  一个字母或下划线或数字

  d  一个数字

  .  除换行符以外的任意字符

  *  表示任意长度的字符

  +  至少一个字符

  ?  一个或0个字符

  s  任意长度的空白符

  {n}  表示n个字符

  {n,m}  表示n到m个字符

  [0-9a-zA-Z]  表示一个数字或字母或下划线

  A | B  表示A 或 B

  ^  表示以什么开头

  $  表示以什么结尾

  (?<= )  前瞻

  (?= )  后顾

  分组问题

import re
def main():
    username = 'jackfrued'
    if re.match(r'^w{6,20}$', username):
        # 如果匹配成功,返回True, 失败,返回None
        # search 也行
        print('匹配成功')
    else:
        print('无效的用户名')
    m = re.match(r'^w{6,20}$', username)
    print(m.span())
    print(m.group())


if __name__ == '__main__':
    main()

  re 的方法

    compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象,供 match() 和 search() 这两个函数使用。

    re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。

    re.search 扫描整个字符串并返回第一个成功的匹配。

    Python 的re模块提供了re.sub用于替换字符串中的匹配项。

    re.findall在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。

    re.finditer和 findall 类似,在字符串中找到正则表达式所匹配的所有子串,并把它们作为一个迭代器返回。

    split 方法按照能够匹配的子串将字符串分割后返回列表

import re


# 正则表达式之sub替换

def foo(mo):
    val = int(mo.group())
    return str(val ** 2)


def main():
    sentence = '重要的事情说1次,我的电话5,她3,他4的号码'

    m = re.sub(r'd+', foo, sentence)
    print(m)


if __name__ == '__main__':
    main()

git -- Linus 合并模式,只是在提交时需要使用中央处理器

  1.git --version 检查是否安装成功

  2.mkdir 创建文件夹  open notepad 创建文本

  3.git init 初始化方法    repository - 仓库

  4. git add .    加载文件,‘.’ 表示所有文件,可以换成具体的文件名

  5.git remove 删除添加的文件

  6. git commit -m '说明'    将文件保存在本地

  7.git remote add origin + 网址  连接中央处理器,云端

  8. git push -u origin master  推送,上传

  9. git log -- 查看历史版本   git status -- 查看做了什么操作

  

原文地址:https://www.cnblogs.com/zl666/p/8604523.html