相关疑难解决方法(0)

Python中可索引的弱有序集

我想知道是否有一种简单的方法可以在Python中构建一个可索引的弱有序集.我试着自己建一个.这是我想出的:

"""
An indexable, ordered set of objects, which are held by weak reference.
"""
from nose.tools import *
import blist
import weakref


class WeakOrderedSet(blist.weaksortedset):
    """
    A blist.weaksortedset whose key is the insertion order.
    """
    def __init__(self, iterable=()):
        self.insertion_order = weakref.WeakKeyDictionary()  # value_type to int
        self.last_key = 0
        super().__init__(key=self.insertion_order.__getitem__)
        for item in iterable:
            self.add(item)

    def __delitem__(self, index):
        values = super().__getitem__(index)
        super().__delitem__(index)
        if not isinstance(index, slice):
            # values is just one element
            values = [values]
        for value in values:
            if value …
Run Code Online (Sandbox Code Playgroud)

python inheritance weak-references

10
推荐指数
1
解决办法
1203
查看次数

如何在装饰器中注册它装饰的所有功能?

假设您有以下装饰器.如何修改它来附加一些列表引用它所装饰的所有函数?

def memoize(obj):
    cache = obj.cache = {}

    @functools.wraps(obj)
    def memoizer(*args, **kwargs):
        if args not in cache:
            cache[args] = obj(*args, **kwargs)
        return cache[args]
    return memoizer

@memoize
def foo(bar):
    return bar ** 3
Run Code Online (Sandbox Code Playgroud)

python decorator python-decorators

7
推荐指数
1
解决办法
644
查看次数