22-作业-反射

请使用面向对象实现栈(后进先出)

请是用面向对象实现队列(先进先出)

如何实现一个可迭代对象?

看代码写结果

class Foo(object):

def __init__(self):
self.name = '武沛齐'
self.age = 100

obj = Foo()
setattr(Foo, 'email', 'wupeiqi@xx.com')

v1 = getattr(obj, 'email')
v2 = getattr(Foo, 'email')

print(v1, v2)
请补充代码(提:循环的列表过程中如果删除列表元素,会影响后续的循环,推荐:可以尝试从后向前找)

li = ['李杰','女神','金鑫','武沛齐']

name = input('请输入要删除的姓氏:') # 如输入“李”,则删除所有姓李的人。

请补充代码

有如下字典,请删除指定数据。

class User(object):
def init(self, name, age):
self.name = name
self.age = age

info = [User('武沛齐',19),User('李杰',73),User('景女神',16)]

name = input('请输入要删除的用户姓名:')

请补充代码将指定用户对象再info列表中删除。

补充代码实现:校园管理系统。

!/usr/bin/env python

-- coding:utf-8 --

class User(object):
def init(self, name, email, age):
self.name = name
self.email = email
self.age = age

def __str__(self):
return self.name

class School(object):
"""学校"""

def __init__(self):
# 员工字典,格式为:{"销售部": [用户对象,用户对象,] }
self.user_dict = {}
def invite(self, department, user_object):
"""
招聘,到用户信息之后,将用户按照指定结构添加到 user_dict结构中。
:param department: 部门名称,字符串类型。
:param user_object: 用户对象,包含用户信息。
:return:
"""
pass
def dimission(self, username, department=None):
"""
离职,讲用户在员工字典中移除。
:param username: 员工姓名
:param department: 部门名称,如果未指定部门名称,则遍历找到所有员工信息,并将在员工字典中移除。
:return:
"""
pass
def run(self):
"""
主程序
:return:
"""
pass

if name == 'main':
obj = School()
obj.run()

请编写网站实现如下功能。
需求:

实现 MIDDLEWARE_CLASSES 中的所有类,并约束每个类中必须有process方法。

用户访问时,使用importlib和反射 让 MIDDLEWARE_CLASSES 中的每个类对 login、logout、index 方法的返回值进行包装,最终让用户看到包装后的结果。
如:

用户访问 : http://127.0.0.1:8000/login/
页面显示: 【csrf】【auth】【session】 登录 【session】 【auth】 【csrf】

用户访问 : http://127.0.0.1:8000/index/
页面显示: 【csrf】【auth】【session】 登录 【session】 【auth】 【csrf】

即:每个类都是对view中返回返回值的内容进行包装。

MIDDLEWARE_CLASSES = [
'utils.session.SessionMiddleware',
'utils.auth.AuthMiddleware',
'utils.csrf.CrsfMiddleware',
]

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()
method_name = environ.get('PATH_INFO').strip('/')
if not hasattr(obj,method_name):
return ["".encode("utf-8"),]
response = getattr(obj,method_name)()
return [response.encode("utf-8") ]

server = make_server('127.0.0.1', 8000, func)
server.serve_forever()

预习
单例模式
logging模块
项目目录结构

posted @   指弹小能手  阅读(110)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
历史上的今天:
2017-06-15 OCP 11G 实验环境安装文档 ( RedHat5.5 + Oracle11g )

关于作者:专注数据库、Python 开发、ROS、深度学习,请多多赐教!

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 原文链接 如有问题, 可邮件(iamkuboy@163.com)咨询.

点击右上角即可分享
微信分享提示