0
我有一個裝飾器方法來檢查傳遞給函數的參數類型。將當前類傳遞給裝飾函數
def accepts(*types):
def check_accepts(f):
assert len(types) == f.func_code.co_argcount
def new_f(*args, **kwds):
for (a, t) in zip(args, types):
assert isinstance(a, t), \
"arg %r does not match %s" % (a,t)
return f(*args, **kwds)
new_f.func_name = f.func_name
return new_f
return check_accepts
現在,在一個類(在classA.py
),我想一個方法只接受同一類的參數:
class ClassA:
@accepts(WHATTOPUTHERE)
def doSomething(otherObject):
# Do something
在其他類我就可以把ClassA
到位WHATTOPUTHERE
,但在classA.py
內,ClassA
未知。我如何才能將當前課程傳遞給@accepts()
函數?
對不起,我不知道你是什麼意思。這不是我的意圖,不是。你能解釋爲什麼會發生? – RemiX
呃,想一想,這不會發生在這裏;你已經重新實現了相同的類型檢查方法*已經*在Python 2中執行;強制'self'屬於當前類的相同類型或子類。但它看起來好像你沒有考慮到'args [0]'是'self'在這裏。 –