多重继承
class Father (object) :
def __init__ (self, name) :
self._name = name
def drink (self) :
print(self._name + '正在白酒' )
class Monk (object) :
def __init__ (self, nickname) :
self._nickname = nickname
def eat_vagetable (self) :
print(self._nickname + '正在吃斋' )
class Musician (object) :
def __init__ (self, art_name) :
self._art_name = art_name
def play_piano (self) :
print(self._art_name + '正在弹钢琴' )
def drink (self) :
print(self._art_name + '正在喝绿茶' )
class Son (Father, Monk, Musician) :
def __init__ (self, name, nickname, art_name) :
Father.__init__(self, name)
Monk.__init__(self, nickname)
Musician.__init__(self, art_name)
def main () :
son = Son('王大锤' , '智障禅师' , '小炮' )
son.drink()
Musician.drink(son)
son.eat_vagetable()
son.play_piano()
if __name__ == '__main__' :
main()
from abc import ABCMeta, abstractmethod
class Father (object) :
def __init__ (self, name) :
self._name = name
def drink (self) :
print(self._name + '正在白酒' )
class Monk (object, metaclass=ABCMeta) :
def __init__ (self, nickname) :
self._nickname = nickname
@abstractmethod
def eat_vagetable (self) :
pass
class Musician (object, metaclass=ABCMeta) :
def __init__ (self, art_name) :
self._art_name = art_name
@abstractmethod
def play_piano (self) :
print(self._art_name + '正在弹钢琴' )
@abstractmethod
def drink (self) :
print(self._art_name + '正在喝绿茶' )
class Son (Father, Monk, Musician) :
def __init__ (self, name, nickname, art_name) :
Father.__init__(self, name)
self._nickname = nickname
self._art_name =art_name
def eat_vagetable (self) :
print(self._nickname + '正在吃斋' )
def play_piano (self) :
print(self._art_name + '正在弹钢琴' )
def drink (self) :
print(self._art_name + '正在喝绿茶' )
def main () :
son = Son('王大锤' , '智障禅师' , '小炮' )
son.drink()
son.eat_vagetable()
son.play_piano()
if __name__ == '__main__' :
main()
class A (object) :
def foo (self) :
print('A\'s foo' )
class B (object) :
pass
class C (object) :
def foo (self) :
print('C\'s foo' )
class D (B, C) :
pass
def main () :
d = D()
d.foo()
if __name__ == '__main__' :
main()
正则表达式 - 工具 - 字符串的匹配模式
def is_valid_username (username) :
"""
判断用户名是否有效(用户名有字母数字下滑线构成且长度为6-20字符
:param username: 用户名
:return: 有效返回True 无效返回False
"""
if 6 <= len(username) <= 20 :
for c in username:
if c not in 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_' :
return False
return True
return False
import re
username = 'jackfrued##'
m = re.match(r'\w{6,20}' , username)
print(m)
print(m.span())
print(m.group())
if m:
print('匹配成功' )
else :
print('匹配不成功' )
import re
username = '###jackfrued##'
m = re.search(r'\w{6,20}' , username)
print(m)
print(m.span())
print(m.group())
if m:
print('匹配成功' )
else :
print('匹配不成功' )
print('a\n' )
print('a\\n' )
print(r'a\n' )
import re
user = input('请输入账号' )
password = input('请输入密码' )
u = re.match(r'^[0-9a-zA-Z_]{6,20}$' , user)
s = re.match(r'[1-9]\d{4,11}' , password)
if not u :
print('请输入正确的账号' )
if not s:
print('请输入正确的密码' )
if u and s:
print('有效' )
请输入账号666666
请输入密码666666
有效
13 [0 -9 ]\d{8 }|14 [5 ,7 ]\d{8 }|15 [012356789 ]\d{8 }|17 [678 ]\d{8 }|18 [0 -9 ]\d{8 }
版本控制
"""
CVS - Concurrent Version System
VSS - Visual Source Safe
都是锁模式
2000年的时候被淘汰
Subversion 合并模式 必须有中央服务器
2005
Git-Linux 可以在本地做服务器 有了中央服务器效果就和Subversion一样
"""
"""
在命令行提示符下输入
版本控制可以放任意文件
git --version检查是否已安装好git
git init 初始化git,设置本地仓库,一个仓库只需要设置一次
git add . (.表示所有文件,注意空格) 将所有文件纳入版本控制
git add 文件名 将制定文件纳入版本控制,并没有真正的提交
git rm 文件名 删除制定文件
git status 显示版本控制状态,查看文件是否
git commit -m '上传原因' 将文件正式纳入版本控制 提交文件
不要输入git commit 后果自负。。一定要加-m和原因
git log 查看所有历史版本
git reset f3f3d818a2423ed11c98554a264a0717fd44eda1 回到历史版本,后面的是唯一的版本号
git checkout 文件名 拿回一个删除的文件
去Coding上建一个项目
git remote add origin https://git.coding.net/******/******.git
git push -u origin master 通过这两段代码关联仓库
如果是要合并项目
需要输入git pull
git 基本操作指南
http://www.bootcss.com/p/git-guide/
"""
git指南
"""
熟悉这两个工具
"""