草庐IT

python - django 信号是否也包含在 transaction.atomic 装饰器中?

我有一个模型文件,它使用post_save信号在另一个表中创建链接行。以典型的方式,我可以从我的一个View创建一个页面,该页面用@transaction.atomic装饰。我想知道这个装饰器是否会将Page对象的创建和SharedPage对象的创建放在同一个事务中。从django文档中不清楚信号是该原子事务的一部分。模型.pyclassPage(models.Model):name=models.CharField(default='Mydefaultpage',max_length=200,blank=False)created_at=models.DateTimeField(au

c# - 在 C# 中实现方法装饰器

在python中可以实现函数装饰器来扩展函数和方法的行为。特别是我正在将设备库从python迁移到C#。与设备的通信可能会产生错误,这些错误应该通过自定义异常重新引发。在python中我会这样写:@device_error_wrapper("DeviceA","Errorwhilesettingoutputvoltage.")defset_voltage(self,voltage):"""Safelysettheoutputvoltageofdevice."""self.__handle.write(":source:voltage:level{0}".format(voltage))

python - 在装饰器类中,访问包含装饰方法的类的实例

我有以下装饰器,它在调用用@saveconfig装饰的方法后保存配置文件:classsaveconfig(object):def__init__(self,f):self.f=fdef__call__(self,*args):self.f(object,*args)#Hereiwanttoaccess"cfg"definedinpbtoolsprint"Savingconfiguration"我在下面的类中使用这个装饰器。方法createkvm被调用后,配置对象self.cfg应该保存在装饰器中:classpbtools()def__init__(self):self.configfi

Python:编写接受参数的装饰器的快捷方式?

Python标准库是否有编写接受参数的装饰器的快捷方式?例如,如果我想写一个像with_timeout(timeout)这样的装饰器:@with_timeout(10.0)defcook_eggs(eggs):whilenoteggs.are_done():eggs.cook()我必须写这样的东西:defwith_timeout(timeout):_func=[None]defwith_timeout_helper(*args,**kwargs):withTimeout(timeout):return_func[0](*args,**kwargs)defwith_timeout_ret

python - 如何将装饰器附加到 python 中的函数 "after the fact"?

我对python中函数装饰器的理解(我可能是错的)是它们应该添加副作用并修改函数的返回值。现在装饰器被添加到要装饰的函数的函数定义之上或通过赋值。这是一个小例子:defprint_args_decor(function):defwrapper(*args,**kwargs):print'Arguments:',args,kwargs#Addedside-effectreturnfunction(*args,**kwargs)*5#Modifiedreturnvaluereturnwrapper@print_args_decordefdo_stuff(strg,n=10):"""Repe

python - 装饰函数可以访问装饰器的变量吗

我试图了解装饰器的工作原理,并且想知道装饰函数是否可以访问装饰器的变量。例如,在下面的代码中,如何让f1可以访问localVariable?这可能吗,这甚至是一种好的做事方式吗?deffuncDec(func):localVariable="I'malocalstring"deffunc2Return(*args):print"CallinglocalVariablefromdecorator"+localVariablefunc(*args)print"donewithcallingf1"returnfunc2Return@funcDecdeff1(x,y):printx+yprin

python - 为什么我的 Django View 装饰器没有收到传递给它的请求?

我有一个看起来像这样的设置:deffoo_decorator(function):@wraps(function)defdecorator(*args,**kwargs):printkwargsreturnfunction(*args,**kwargs)returndecorator@foo_decoratordefanalytics(request,page_id,promotion_id):pass输出:{'promotion_id':u'11','page_id':u'119766481432558'}为什么我的装饰器没有将request传递给它? 最

python - 在使用 @property 装饰器时在属性的 setter 方法中使用 super() 会引发 AttributeError

尝试覆盖子类中的属性时,我对这种行为感到有些困惑。第一个示例设置了两个类,Parent和Child。Parent继承自object,而Child继承自Parent。属性a是使用属性装饰器定义的。当调用child.a的setter方法时,会引发AttributeError。在第二个示例中,通过使用property()函数而不是装饰器,一切都按预期工作。谁能阐明为什么行为不同?另外,是的,我知道不需要Child中的__init__定义。示例1-使用@propertyclassParent(object):def__init__(self):self._a='a'@propertydefa(

python - 如果传递给注释函数的参数类型与指定的不匹配,是否有可能使 python 抛出错误?

python3.5中的一个新特性是类型提示。例如下面的代码现在有效:defgreeting(name:str)->str:return'Hello'+name但是,据我了解,它本身不会检查任何内容,而且其解释方式与此完全相同:defgreeting(name):return'Hello'+name并且主要是为了帮助静态分析器(并使代码更容易理解)而实现的。但是,当将无效类型的参数传递给具有注释参数类型的函数(仅使用类型提示语法)? 最佳答案 类型提示工具PEP0484明确列为非目标:Whiletheproposedtypingmod

python - Python Web 开发中的装饰器与类

我注意到PythonWeb框架处理请求处理的三种主要方式:装饰器、具有用于单个请求的方法的Controller类,以及具有GET/POST方法的请求类。我很好奇这三种方法的优点。这些方法有哪些主要优点或缺点?为了修正想法,这里有三个例子。Bottle使用装饰器:@route('/')defindex():return'HelloWorld!'Pylons使用Controller类:classHelloController(BaseController):defindex(self):return'HelloWorld'Tornado使用带有类型方法的请求处理程序类:classMainH