愚公移山日记·41
今天是在B站学习这门课程的最后一天,收获蛮多的了解到了很多之前没有接触过的新知识。在B站上这门课一共分为16天,但是我通过视频却足足学了一个月,今天刚好是第三十天。
简单总结一下吧:
- 这门课程中的知识点很密集,老师的每一句话几乎都是知识点,而且这老师的讲解很接地气。
- 这门课程中讲解了很多关于Linux系统的知识,这门课程使用的是乌班图系统如果你看我之前的博客的话会看到,MySQL也是在乌班图系统下操作的(但是你敢相信我到现在还在使用windows系统,而且没有使用虚拟机)。
- 当然在我学完这门课程之后我依旧没有把Linux系统放在眼里,直到今天下午我打算找一些关于网路爬虫的课程,才发现,一旦遇到python的进阶教程,全部清一色的使用Linux系统,被迫无奈,只得下载乌班图。
就说这么多吧,还要把今天的学习任务搞一下。
with 管理上下文
'''
类 : MyFile()
类方法:
__enter__() 上文方法
# __exit__() 下文方法
# __init__() 方法 接受参数并且初始化
with MyFile('hello.txt','r') as file:
file.read()
'''
class MyFile(object):
# __enter__() 上文方法
def __enter__(self):
print('进入上文')
# 打开文件
self.file = open(self.file_name, self.file_model)
# 返回打开文件的文件资源
return self.file
# __exit__() 下文方法
def __exit__(self, exc_type, exc_val, exc_tb):
print('进入下文')
# 关闭文件资源
self.file.close()
# __init__() 方法 接受参数并且初始化
def __init__(self, file_name, file_model):
# 保存文件名和文件打开模式 到实例属性中
self.file_name = file_name
self.file_model = file_model
if __name__ == '__main__':
with MyFile('hello', 'r') as file:
# 开始读取文件
file_data = file.read()
print(file_data)
装饰器实现上下文
'''
思路:
def myopen(file_nam,file_model)
上文(打开资源)
yield
下文(关闭资源)
装饰器 装饰函数的步骤
导入模块
from contextlib import contextmanager
开始展装饰
'''
from contextlib import contextmanager
@contextmanager
def myopen(file_name, fiel_model):
print('进入上文')
# 打开文件
file = open(file_name, fiel_model)
# 返回资源
yield file
print('进入下文')
# 下文
# 关闭资源
file.close()
with myopen('hello', 'r') as file:
file_data = file.read()
print(file_data)
魔法属性和方法-1
# __doc__
# __module__
# __init__
# __del__
class Goods(object):
'''这是一个商品的类 Goods'''
def set_price(self):
'''这是Goods类中定义的设置价格的方法'''
pass
def __del__(self):
print('__del__ 正在执行')
# 类的描述信息
# 类名.__doc__
print(Goods.__doc__)
goods = Goods()
# 对象方法的描述
# 对象.方法名.__doc__
print(goods.set_price.__doc__)
# 获取当前模块
print(goods.__module__)
# 获取对象所属类
print(goods.__class__)
# 删除对象会执行 对象的__del__()
del goods
魔法属性和方法-2
# __call__ 当使用对象名() 会调用该方法
# __dict__ 获取对象的信息 对象名.__dict__ 对象的实例属性
# 获取类的信息 类名.__dict__ 模块、类描述、对象的方法...
# __str__() 打印对象的会调用 print(obj) str 方法必须要return 而且return的必须是一段字符串
# 用字典的书写格式操作对象的方法
# __getitrm__ 对象['xxxx']
# __setitem__ 对象['xx' ] = xxx
# __delitem__del 对象['xx']
class Goods(object):
'''这是一个商品的类 Goods'''
# 类属性
goods_color = '白色'
def __init__(self):
# 实例属性
self.org_price = 100
self.discount = 0.7
def set_price(self):
'''这是Goods类中定义的设置价格的方法'''
pass
def __call__(self, *args, **kwargs):
print('__call__ 方法正在被调用')
def __str__(self):
return 'kkkkk'
def __del__(self):
print('__del__ 正在执行')
def __getitem__(self, item):
print('key = ', item)
def __setitem__(self, key, value):
print('key = %s,valu = %s' % (key, value))
def __delitem__(self, key):
print('要删除key = ', key)
goods = Goods()
# 对象名() 回去调用对象的__call__()方法
goods()
# print打印对象的时候,默认输出<__mian__.Goods object at xkooeee>
print(goods)
# 通过 __dict__ 获取对象信息,返回字典
print(goods.__dict__)
# 通过__dict__ 获取类的信息 类名.__dict__ 返回值是一个字典
print(Goods.__dict__)
# dict1 = {}
# dict1['a'] = 10
# goods['a'] 调用__getitem__ 方法
goods['a']
# goods['a'] =10 调用 __setitem__ key,value
goods['a'] = 10
# del goods['a'] 调用 __delitem__ key
del goods['a']
以上就今天的学习成果
后记
学到今天也有几个月了,又突然感觉之前学习的都忘记了╮(╯▽╰)╭以后还得丢去找一些实战的例子去练,其实今天也想去在python123.com 上找点题目去练习,写了两道就感觉力不从心,看到题目完全没有思路,所以以后每天都要写一道题练练手。
还有 学python不仅仅是学python md所有的计算机知识都得学,尤其是Linux的知识必须的会要不人进阶的课程根本没法学。