python中load函数_有没有办法在python的class被load的时候触发一个函数

postimport.py

# -*- coding: utf-8 -*-

import importlib

import sys

from collections import defaultdict

_post_import_hooks = defaultdict(list)

class PostImportFinder:

def __init__(self):

self._skip = set()

def find_module(self, fullname, path=None):

if fullname in self._skip:

return None

self._skip.add(fullname)

return PostImportLoader(self)

class PostImportLoader:

def __init__(self, finder):

self._finder = finder

def load_module(self, fullname):

importlib.import_module(fullname)

module = sys.modules[fullname]

for func in _post_import_hooks[fullname]:

func(module)

self._finder._skip.remove(fullname)

return module

def when_imported(fullname):

def decorate(func):

if fullname in sys.modules:

func(sys.modules[fullname])

else:

_post_import_hooks[fullname].append(func)

return func

return decorate

sys.meta_path.insert(0, PostImportFinder())

调用方:

myTest.py

from postimport import when_imported

@when_imported("PyQt4")

def warn(mod):

print "are you sure you want to import " + str(mod)

import PyQt4

这样当PyQt4模块被导入的时候,会触发被装饰器when_imported修饰的函数warn

好的,我来为您解析一下Python编写一个简单登录功能的过程。 1.首先,需要建立一个用户账号和密码的数据库,可以使用文本文件、JSON文件、数据库等方式存储。 2.在程序,需要提供一个登录界面,让用户输入账号和密码。 3.程序读取用户输入的账号和密码,并在数据库查找匹配的账号和密码。 4.如果匹配成功,则登录成功,程序跳转到主界面;如果匹配失败,则提示用户重新输入账号和密码。 具体实现过程如下: 1.建立一个用户账号和密码的数据库,可以使用JSON文件存储。例如,创建一个名为user.json的文件,用于存储用户账号和密码信息。 2.编写登录界面代码,使用Python的tkinter库实现。界面需要包含账号和密码输入框、登录按钮等控件。用户输入账号和密码后,点击登录按钮触发登录功能。 3.编写登录功能代码。程序读取用户输入的账号和密码,并在user.json文件查找匹配的账号和密码。如果匹配成功,则登录成功,程序跳转到主界面;如果匹配失败,则提示用户重新输入账号和密码。 下面是一个简单的Python登录功能实现示例代码: ```python import tkinter as tk import json class LoginWindow(tk.Frame): def __init__(self, master=None): super().__init__(master) self.master = master self.master.title("登录窗口") self.create_widgets() def create_widgets(self): self.label_username = tk.Label(self.master, text="用户名:") self.label_username.grid(row=0, column=0) self.username = tk.Entry(self.master) self.username.grid(row=0, column=1) self.label_password = tk.Label(self.master, text="密码:") self.label_password.grid(row=1, column=0) self.password = tk.Entry(self.master, show="*") self.password.grid(row=1, column=1) self.button_login = tk.Button(self.master, text="登录", command=self.login) self.button_login.grid(row=2, column=1) def login(self): username = self.username.get() password = self.password.get() with open("user.json", "r") as f: users = json.load(f) if username in users and users[username] == password: print("登录成功!") # 进入主界面 else: print("账号或密码错误,请重新输入!") if __name__ == "__main__": root = tk.Tk() app = LoginWindow(master=root) app.mainloop() ``` 这段代码,我们使用tkinter库实现了一个简单的登录界面。用户输入账号和密码后,点击登录按钮触发login()函数进行登录验证。程序读取user.json文件的账号和密码信息,并进行匹配,如果匹配成功,则提示登录成功;否则提示账号或密码错误。 需要注意的是,这段代码的登录验证比较简单,只是对用户名和密码进行了简单的匹配。在实际应用,需要对用户输入的账号和密码进行更加严格的验证,以确保系统的安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值