不确定下面的Python代码有什么问题。将不胜感激任何帮助。我调查了here和here,但无法解决我的问题。
代码:
class myClass:
def factorial(n,self):
if n == 1:
return 1
else:
return n * self.factorial(n-1)
obj = myClass()
obj.factorial(3)
错误
Traceback (most recent call last):
File "a.py", line 9, in <module>
obj.factorial(3)
File "a.py", line 6, in factorial
return n * self.factorial(n-1)
AttributeError: 'int' object has no attribute 'factorial'
答案 0 :(得分:3)
您转置了factorial
的参数名称。引用对象本身必须首先出现。实际上,您正在尝试访问传入号码的factorial
变量。将factorial
的定义更改为:
def factorial(self, n):
...
答案 1 :(得分:1)
self
需要是类函数的第一个参数。改变
def factorial(n,self)
到
def factorial(self, n)
答案 2 :(得分:1)
将您的方法签名更改为
def factorial(self, n)
而不是
def factorial(n, self)
因为当您通过对象调用类方法时。 python期望引用类对象作为第一个参数。在你的情况下它是'int'。这不是对类对象的引用。