小编Chr*_*oph的帖子

在Python中为每个实例装饰方法

假设我有一些简单的课程

class TestClass:
    def doSomething(self):
        print 'Did something'
Run Code Online (Sandbox Code Playgroud)

我想装饰该doSomething方法,例如计算调用次数

class SimpleDecorator(object):
    def __init__(self,func):
        self.func=func
        self.count=0
    def __get__(self,obj,objtype=None):
        return MethodType(self,obj,objtype)
    def __call__(self,*args,**kwargs):
        self.count+=1
        return self.func(*args,**kwargs)
Run Code Online (Sandbox Code Playgroud)

现在这计算了对装饰方法的调用次数,但是我希望有一个每个实例的计数器,这样就可以了

foo1=TestClass()
foo1.doSomething()
foo2=TestClass()
Run Code Online (Sandbox Code Playgroud)

foo1.doSomething.count是1并且foo2.doSomething.count是0.据我所知,使用装饰器是不可能的.有没有办法实现这种行为?

python decorator

5
推荐指数
1
解决办法
738
查看次数

检索所有x坐标的优雅方式

假设我在笛卡尔坐标系中声明了一组点:

points = [[1, 2], [3, 4], [5, 6], [7, 8]]
Run Code Online (Sandbox Code Playgroud)

是否存在一种优雅的方法来获取所有x坐标作为列表points

以下是我检索所有x坐标并将其作为列表返回的内容:

def getXs(points):
    length = len(points)
    xs = [None] * length
    for i in range(length):
        xs[i] = points[i][0]
    return xs
Run Code Online (Sandbox Code Playgroud)

我希望getXs()可以更短更优雅.

python list

3
推荐指数
1
解决办法
97
查看次数

标签 统计

python ×2

decorator ×1

list ×1