标签:推荐 初始 imp 就是 外部 正则 空白 访问 out
问题:
可能修改的属性值不合法
在类的外部可以随意修改类的内部属性
#私有方法的定义&&使用 class Comrade: # 私有方法 def __send_message(self): print("消息已经向上级汇报") def answer_secret(self, secret): if secret == "芝麻开门": print("接头成功!") self.__send_message() # 调用私有方法 else: print("接头失败!") comrade = Comrade() comrade.answer_secret("芝麻开门")
重写父类方法
多继承
多态
#类对象 class Person: sum_num = 0 def __init__(self, new_name): self.name = new_name Person.sum_num += 1 p1 = Person("zhangsan") print(p1.sum_num, Person.sum_num) p2 = Person("lisi") print(p1.sum_num, p2.sum_num, Person.sum_num) #结果显示如下: 1 1 2 2 2
# 类方法 @classmethod def add_sum_num(cls): cls.sum_num += 1 print(cls.sum_num)
使用@staticmethod修饰的方法,不需要传递任何默认参数。不能操作实例属性
调用方式:类名.静态方法 或者 实例对象.静态方法
@staticmethod def static_test(): print("-------静态方法-------") Person.sum_num += 1 print(Person.sum_num)
__new__(cls)
超类object类内置的方法,用户创建对象,返回创建对象的引用
必须提供cls参数,代表类对象
必须要有返回值,返回创建对象的引用
class DataBaseObj(object): def __init__(self, new_name): # 对象初始化 print("----init构造方法----") self.name = new_name print(self.name) def __new__(cls, name): # 创建对象 print("cls_id:", id(cls)) return object.__new__() # 必须有返回值,返回的是创建的对象的引用
单例类
在整个程序系统中确保某一类只有一个实例对象
# 单例类 class SingleInstance: __instance = None def __init__(self): print("-----init-----") def __new__(cls): if cls.__instance is None: cls.__instance = object.__new__(cls) return cls.__instance s1 = SingleInstance() print(id(s1)) s2 = SingleInstance() print(id(s2))
#显示结果
-----init-----
2664579822280
-----init-----
2664579822280
try: 逻辑代码块 except ExceptionType as err: 异常处理方法
try: 逻辑代码块 except (ExceptionType1, ExceptionType2, …) as err: 异常处理方法
try: 逻辑代码块 except (ExceptionType1, ExceptionType2, …) as err1: 异常处理方法 except Exception as err2: 异常处理方法
try: 逻辑代码块 except (ExceptionType1, ExceptionType2, …) as err1: 异常处理方法 except Exception as err2: 异常处理方法 finally: 无论是否有异常产生,都会执行这里的代码块!
https://www.runoob.com/python/python-exceptions.html
一个项目可以包含多个包,一个包可以包含多个模块,一个模块就是一个以.py结尾的文件,一个模块内可以定义变量、函数、类等。
引入单个模块:import module_name 引入多个模块:import module_name1, module_name2, … 引入模块中的指定函数: from module_name import func1, func2, …
用于标识一个包,而不是普通的文件夹
会在包或者该包的模块被引用时自动调用
常用于设置包和模块的一些初始化操作, 比如批量导入时限制部分模块可被导入
用于正则匹配检查,如果待匹配字符串能够匹配正则表达式,则match方法返回匹配对象,否则返回none
采用从左往右逐项比较匹配
用来返回字符串的匹配部分
import re
rs = re.match("chinahadoop", "chinahadoop.com")
print(rs)
if rs is not None:
print(rs.group())
字符 |
描述 |
. |
匹配除“\n”之外的任意单个字符 rs = re.match(".","a")
|
\d |
匹配0-9之间的一个数字,等价于[0-9] |
\D |
匹配一个非数字字符,等价于[^0-9] |
\s |
匹配任意空白字符,如空格、制表符“\t”、换行“\n”等 rs = re.match("\s","\t")
|
\S |
匹配任意非空白字符 rs = re.match("\S","\t")
|
\w |
匹配任意单词字符(包含下划线),如a-z,A-Z,0-9,_ rs = re.match("\w","a")
|
\W |
匹配任意非单词字符,等价于[^a-zA-Z0-9] |
[] |
匹配[ ]中列举的字符 rs = re.match("[Hh]","hello")
|
^ |
取反 |
字符 |
描述 |
* |
一个字符可以出现任意次,也可以一次都不出现 rs = re.match("1\d*","1234567")
|
+ |
一个字符至少出现一次 rs = re.match("\d+","abc")
|
? |
一个字符至多出现一次 rs = re.match("\d?","abc")
|
{m} |
一个字符出现m次 #{m}固定次数
|
{m,} |
一个字符至少出现m次 #{m,}
|
{m,n} |
一个字符出现m到n次 rs = re.match("\d{0,1}","abc") #等价于?至多一次
|
#匹配11位的手机号
#11位,第一位1,第二位3,5,7,8 第3位到第11为0到9的数字
‘‘‘
rs = re.match("1[3578]\d{9}","13623198765")
print(rs)
#转义字符处理
str3 = r"hello\\world"#原生字符串
print(str3)
rs = re.match(r"\w{5}\\\\\w{5}",str3)
print(rs)
字符 |
描述 |
^ |
用于匹配一个字符串的开头 |
$ |
用于匹配一个字符串的结尾 #邮箱匹配
|
\b |
用于匹配单词的边界 rs = re.match(r".*\bpython\b","hi python hello")
|
\B |
用于匹配非单词边界 rs = re.match(r".*\Bth\B","hi python hello")
|
字符 |
描述 |
| |
表示或,匹配 | 链接的任何一个表达式 |
() |
将括号中字符作为一个分组 import re
|
\NUM |
配合分组()使用,引用分组NUM(NUM表示分组的编号)对应的匹配规则 #\num
|
(?P<name>) |
给分组起别名 rs = re.match(r"<(?P<g1>.+)><(?P<g2>.+)>.+</(?P=g2)></(?P=g1)>",html_str)
|
(?P=name) |
应用指定别名的分组匹配到的字符串 |
#search
rs = re.search("car","haha car carbal abcar carbal")
print(rs)
#findall
rs = re.findall("car","haha car carbal abcar carbal")
print(rs)
mail_str = "zhangsan:helloworld@163.com,li:123456@qq.cn"
list = re.findall(r"(\w{3,20}@(163|qq)\.(com|cn))",mail_str)
print(list)
#finditer
itor = re.finditer(r"\w{3,20}@(163|qq)\.(com|cn)",mail_str)
for it in itor:
print(it.group())
#sub
str = "java python c cpp java"
rs = re.sub(r"java","python",str)
print(rs)
#split
str_test = "apple=5,banana=3,orange=2"
price_list = str_test.split(",")
for price in price_list:
print(price)
#贪婪模式
rs = re.findall(r"hello\d*","hello12345")
print(rs)
rs = re.findall(r"hello\d+","hello12345")
print(rs)
rs = re.findall(r"hello\d?","hello12345")
print(rs)
rs = re.findall(r"hello\d{2,}","hello12345")
print(rs)
rs = re.findall(r"hello\d{1,3}","hello12345")
print(rs)
#非贪婪模式
rs = re.findall(r"hello\d*?","hello12345")
print(rs)
rs = re.findall(r"hello\d+?","hello12345")
print(rs)
rs = re.findall(r"hello\d??","hello12345")
print(rs)
rs = re.findall(r"hello\d{2,}?","hello12345")
print(rs)
rs = re.findall(r"hello\d{1,3}?","hello12345")
print(rs)
标签:推荐 初始 imp 就是 外部 正则 空白 访问 out
原文地址:https://www.cnblogs.com/wendyw/p/11940193.html