s21day22 python笔记
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了s21day22 python笔记,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3037字,纯文字阅读大概需要5分钟。
内容图文
![s21day22 python笔记](/upload/InfoBanner/zyjiaocheng/831/f54e1991240341ac86898285cd23f8d5.jpg)
s21day22 python笔记
一、内容回顾及补充
- 模块补充
importlib.import_module:通过字符串的形式导入模块
#示例一: import importlib # 用字符串的形式导入模块。 redis = importlib.import_module('utils.redis') # 用字符串的形式去对象(模块)找到他的成员。 getattr(redis,'func')() #示例二: import importlib middleware_classes = [ 'utils.redis.Redis', # 'utils.mysql.MySQL', 'utils.mongo.Mongo' ] for path in middleware_classes: module_path,class_name = path.rsplit('.',maxsplit=1) module_object = importlib.import_module(module_path)# from utils import redis cls = getattr(module_object,class_name) obj = cls() obj.connect()
可迭代对象补充
表象:可以被for循环的对象就可以称为是可迭代对象
如何让一个对象变成可迭代对象?
- 在类中实现
__iter__
方法且返回一个迭代器(生成器)
# 示例一: class Foo: def __iter__(self): return iter([1,2,3,4]) obj = Foo() # 示例二: class Foo: def __iter__(self): yield 1 yield 2 yield 3 obj = Foo()
- 在类中实现
注意:只要能被for循环,就是去看他内部的
__iter__
方法
二、数据结构
2.1 队列
- 先进先出
2.2 栈
后进先出
class Stack(object): """ 后进先出 """ def __init__(self): self.data_list = [] def push(self, val): """ 向栈中压入一个数据(入栈) """ self.data_list.append(val) def pop(self): """ 从栈中拿走一个数据(出栈) """ return self.data_list.pop()
三、 约束
示例
# 约束字类中必须写send方法,如果不写,则调用时候就报抛出 NotImplementedError class BaseMessage(object): def send(self,a1): raise NotImplementedError('字类中必须有send方法') class Msg(BaseMessage): def send(self): pass class Email(BaseMessage): def send(self): pass class DingDing(BaseMessage): def send(self): print('钉钉') obj = Email() obj.send()
四、 反射
- 根据字符串的形式去某个对象中操作他的成员
4.1 getattr(对象,字符串)
根据字符串的形式去某个对象中获取该成员
class Foo(object): def __init__(self,name): self.name = name obj = Foo('alex') # 获取变量 v1 = getattr(obj,'name') # 获取方法 method_name = getattr(obj,'login') method_name()
4.2 hasattr(对象,字符串)
根据字符串的形式去某个对象中判断是否有该成员
from wsgiref.simple_server import make_server class View(object): def login(self): return '登陆' def logout(self): return '等处' def index(self): return '首页' def func(environ,start_response): start_response("200 OK", [('Content-Type', 'text/plain; charset=utf-8')]) obj = View() # 获取用户输入的URL method_name = environ.get('PATH_INFO').strip('/') if not hasattr(obj,method_name): return ["sdf".encode("utf-8"),] response = getattr(obj,method_name)() return [response.encode("utf-8") ] # 作用:写一个网站,用户只要来方法,就自动找到第三个参数并执行。 server = make_server('192.168.12.87', 8000, func) server.serve_forever()
4.3 setattr(对象,字符串,值)
根据字符串的形式去某个对象中设置/修改该成员
class Foo: pass obj = Foo() obj.k1 = 999 setattr(obj,'k1',123) # obj.k1 = 123 print(obj.k1)
4.4 delattr(对象,字符串)
根据字符串的形式去某个对象中删除该成员
class Foo: pass obj = Foo() obj.k1 = 999 delattr(obj,'k1') print(obj.k1)
4.5 python一切皆对象
- 对象的定义
- 狭义:类实例化出来的就是对象
- 广义:
- 模块(py文件)及其内部成员
- 包(文件夹)及其内部成员
- 类及其内部成员
- 狭义的对象
- python一切皆对象,所以以后想要通过字符串的形式操作其内部成员都可以通过反射的机制实现
内容总结
以上是互联网集市为您收集整理的s21day22 python笔记全部内容,希望文章能够帮你解决s21day22 python笔记所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。