我試圖寫一個類中的一個遞歸函數的遞歸方法的說法,但使用對象的VAR作爲方法的參數有一些麻煩:使用對象變量作爲一個Python類
class nonsense(object):
def __init__(self, val):
self.val = val
def factorial(self, n=self.val):
if n<=1: return 1
return n*self.factorial(n=n-1)
上面的代碼生成以下錯誤:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 4, in nonsense
NameError: name 'self' is not defined
但是,如果我不指self.val,誤差就會消失,但不必指定n是多餘的:
class nonsense(object):
def __init__(self, val):
self.val = val
def factorial(self, n):
if n<=1: return 1
return n*self.factorial(n=n-1)
這樣做的正確方法是什麼?
簡明和清晰。謝謝。 – qed 2012-01-03 02:57:31