我正在尝试创建一个装饰器类来计算调用函数的次数,但是我收到一条错误消息:
"TypeError: __exit__() takes exactly 1 argument (4 given)"
Run Code Online (Sandbox Code Playgroud)
我真的不知道我是怎么给它四个论点的.我的代码看起来像这样:
class fcount2(object):
__instances = {}
def __init__(self, f):
self.__f = f
self.__numcalls = 0
fcount2.__instances[f] = self
def __call__(self, *args, **kwargs):
self.__numcalls += 1
return self.__f(*args, **kwargs)
def __enter__(self):
return self
def __exit__(self):
return self
@staticmethod
def count(f):
return fcount2.__instances[self.__f].__numcalls
@fcount2
def f(n):
return n+2
for n in range(5):
print f(n)
print 'f count =',f.count
def foo(n):
return n*n
with fcount2(foo) as g:
print g(1)
print g(2)
print 'g count …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个包含两行的 CSS 网格。我希望底部的行固定为 47px 高。这很容易。最上面一排给我带来了麻烦。
我希望 CSS 网格的顶行高度至少为 250 像素,即使该行中没有内容也是如此。但如果内容在那里,我希望该行将其高度扩展至最大 303 像素高。也就是说,只有当内容需要时,我才希望行高增长。
从我所看到的类似 的情况来看grid-template-rows: minmax(250px, 303px),如果有足够的空间,它会扩展到 303px。
即使有足够的空间,除非迫不得已,我也不希望它扩展 - 也就是说,它只会因为有高于 250px 的内容而扩展。
我有一个像这样的简单网格:
<div class="myGrid">
<div class="left"></div>
<div class="right"></div>
<div class="bottom"></div>
</div>
Run Code Online (Sandbox Code Playgroud)
使用这样的CSS:
.myGrid {
display: grid;
max-height: 350px;
grid-template-rows: minmax(250px, 303px) 47px;
grid-template-columns: 1fr 2.5fr;
grid-template-areas: "a b" "c c";
}
.left {
grid-area: a;
}
.right {
grid-area: b;
}
.bottom {
grid-area: c;
}
Run Code Online (Sandbox Code Playgroud)
使用此代码,顶行始终为 303px,大概是因为有足够的空间扩展到该高度。但我只希望它能够扩展到那个高度,如果它的内容有必要的话。
我是Python的新手,我不明白函数本身看起来有什么属性.在下面的代码中,有一个名为f的函数,稍后在代码中引用了名为f.count的函数.一个函数,即f,如何有一个.count?我收到一条错误消息:'NoneType'对象在该行上没有属性'count',所以它显然还没有该属性.我该如何赋予它属性?
def fcount(n):
print n.__name__
@fcount
def f(n):
return n+2
for n in range(5):
print n
#print f(n)
print 'f count =',f.count #THE LINE CAUSING THE ERROR MENTIONED ABOVE
@fcount
def g(n):
return n*n
print 'g count =',g.count
print g(3)
print 'g count =',g.count
Run Code Online (Sandbox Code Playgroud)
编辑:添加了fcount(),它没有做任何事情,还有关于错误的详细信息.