• 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 -- 查看做了什么操作

      

  • 相关阅读:
    Qt操作xml文件(增删改功能)
    Qt解析xml
    Qt中使用DOM解析XML文件或者字符串二(实例)
    Qt中使用DOM解析XML文件或者字符串(实例)
    QThread 实用技巧、误区----但文档中没有提到
    事件循环与线程 二
    事件循环与线程 一
    第一讲 递归
    Ubuntu 建立桌面快捷方式
    Codeforces554B:Ohana Cleans Up
  • 原文地址:https://www.cnblogs.com/zl666/p/8604523.html
Copyright © 2020-2023  润新知