Python 每次执行方法后暂停
我尝试在每次执行方法后添加一个暂停,有没有一种方法可以自动执行? 事实上,我有这样的想法: 是的,您可以在创建时使用修改类方法,并使用特殊的装饰器装饰每个函数。在您的情况下,可能是这样的:Python 每次执行方法后暂停,python,time,Python,Time,我尝试在每次执行方法后添加一个暂停,有没有一种方法可以自动执行? 事实上,我有这样的想法: 是的,您可以在创建时使用修改类方法,并使用特殊的装饰器装饰每个函数。在您的情况下,可能是这样的: #! /usr/bin/env python #-*- coding:utf-8 -*- import time from inspect import isfunction from functools import wraps def sleep_decorator(func): @wra
#! /usr/bin/env python
#-*- coding:utf-8 -*-
import time
from inspect import isfunction
from functools import wraps
def sleep_decorator(func):
@wraps(func)
def inner(*args, **kwargs):
result = func(*args, **kwargs)
time.sleep(0.1)
return result
return inner
class BaseFoo(type):
def __new__(cls, name, bases, dct):
for name in dct:
if isfunction(dct[name]):
dct[name] = sleep_decorator(dct[name])
return type.__new__(cls, name, bases, dct)
class Foo (object):
__metaclass__ = BaseFoo
def __init__ (self, a, b):
self.a = a
self.b = b
def printer (self, arg):
print arg
您可以查看decorator(例如,可以使用类decorator对每个类方法应用sleep),但除此之外,没有-实际上没有。无论如何,如果你想让它睡觉,你应该明确地告诉它。这样,如果有人想重复使用您的代码或计时等,那么就不会有那么多惊喜了。。。等等。这里基本上与@Fedor Gogolev的解决方案相同, 除了使用类装饰器而不是元类之外
import time
import inspect
import functools
def sleep(f):
@functools.wraps(f)
def wrapper(*args, **kwargs):
result = f(*args, **kwargs)
time.sleep(0.1)
return result
return wrapper
def sleeper(cls):
for name, method in inspect.getmembers(cls, inspect.ismethod):
setattr(cls, name, sleep(method))
return cls
@sleeper
class Foo(object):
def __init__(self, a, b):
self.a = a
self.b = b
def printer(self, arg):
print arg
f = Foo(1,2)
f.printer('hi')
import time
import inspect
import functools
def sleep(f):
@functools.wraps(f)
def wrapper(*args, **kwargs):
result = f(*args, **kwargs)
time.sleep(0.1)
return result
return wrapper
def sleeper(cls):
for name, method in inspect.getmembers(cls, inspect.ismethod):
setattr(cls, name, sleep(method))
return cls
@sleeper
class Foo(object):
def __init__(self, a, b):
self.a = a
self.b = b
def printer(self, arg):
print arg
f = Foo(1,2)
f.printer('hi')