当使用一个类中定义一个装饰,我怎么自动转移__name__
,__module__
和__doc__
?通常,我会使用functools中的@wraps装饰器。这是我为一个类所做的事情(这不完全是我的代码):
class memoized:
"""Decorator that caches a function's return value each time it is called.
If called later with the same arguments, the cached value is returned, and
not re-evaluated.
"""
def __init__(self, func):
super().__init__()
self.func = func
self.cache = {}
def __call__(self, *args):
try:
return self.cache[args]
except KeyError:
value = self.func(*args)
self.cache[args] = value
return value
except TypeError:
# uncacheable -- for instance, passing a list as an argument.
# Better to not cache than to blow up entirely.
return self.func(*args)
def __repr__(self):
return self.func.__repr__()
def __get__(self, obj, objtype):
return functools.partial(self.__call__, obj)
__doc__ = property(lambda self:self.func.__doc__)
__module__ = property(lambda self:self.func.__module__)
__name__ = property(lambda self:self.func.__name__)
是否有一个标准的装饰器来自动创建名称模块和文档?另外,要使get方法自动化(我想这是为了创建绑定方法?)是否缺少任何方法?
每个人似乎都错过了显而易见的解决方案。
>>> import functools
>>> class memoized(object):
"""Decorator that caches a function's return value each time it is called.
If called later with the same arguments, the cached value is returned, and
not re-evaluated.
"""
def __init__(self, func):
self.func = func
self.cache = {}
functools.update_wrapper(self, func) ## TA-DA! ##
def __call__(self, *args):
pass # Not needed for this demo.
>>> @memoized
def fibonacci(n):
"""fibonacci docstring"""
pass # Not needed for this demo.
>>> fibonacci
<__main__.memoized object at 0x0156DE30>
>>> fibonacci.__name__
'fibonacci'
>>> fibonacci.__doc__
'fibonacci docstring'
等效的 ANSI SQL 数据类型 下列表列出了 ANSI SQL 数据类型和等效的 Microsoft Jet 数据库引擎 SQL数据类型还有它们的有效同义字。并且列出了 等效的 Microsoft SQL服务器数据类型。 ANSI SQL 的数据类型 Microsoft Jet SQL 的数据类型 同义字 Microsoft SQL 服务器数据类型 BIT,BIT VARYING BINARY
问题内容: 我来自SQL Server背景。MySQL中的下列等效数据类型是什么: -支持所有语言的国际多字节字符 -允许很长的文本文档 问题答案: 通过去http://msdn.microsoft.com/en- us/library/ms186939.aspx ,我要说的是, 是最接近的等效项。但我看不到有很多人在使用它,更多人在使用: 据我所知,字符集utf8和ucs2允许使用相同的字符,只
问题内容: 下面的Objective-C代码等效于Swift代码。我找不到带有运行时概念的快速主题。 试图获取类的对象? 更新: 尝试以下代码,出现错误 问题答案: 首先,在不知道您在Objective-C中使用该类对象的目的的情况下,很难将该代码转换为Swift。 在Objective-C中,类对象是对象,并且类型可以保存指向任何类对象的指针。但是,当将Objective-C API桥接到Swi
问题内容: 什么是C#3.5数据类型中的uniqueidentifier(SQL Server 2005)等效项? 问题答案: 它应该是System.Guid或Nullable
问题内容: 我的要求是拥有一个线程,该线程可以维护BlackBerry设备与服务器之间的套接字连接并交换命令,类似于请求和响应。 我的问题是,我需要这个线程在后台运行 所有的时间 ,并保持提供给用户的UI。因此,当服务器发出命令时,此线程将对其进行解析并更新UI,并且如果BlackBerry用户发出了操作,则该线程会将其发送到服务器,然后服务器将对其进行处理。 我在Android中使用开发了相同的
问题内容: 是否有等效于JSON 的XSLT?允许我像XSLT一样对JSON进行XML转换。 问题答案: 有趣的主意。在Google上进行的一些搜索产生了一些感兴趣的页面,包括: 有关如何实现“ jsonT”工具的概述,以及一些下载 关于该实现的一些讨论 一家公司可能已经实施了适当的措施 希望这可以帮助。