gpt4 book ai didi

python - 如何修复这个 OOP 错误?

转载 作者:行者123 更新时间:2023-11-30 23:14:52 25 4
gpt4 key购买 nike

我正在尝试理解 python oop。但这对我来说并不容易。因此我写了 python OOP 程序(ex.2)适用于以下过程程序(ex.1),但它不适用于以下错误。

例1

def factorial(n):  
num = 1
while n >= 1:
num = num * n
n = n - 1
return num

f = factorial(3)
print f # 6

例2

class factorial:

def __init__(self):


self.num = 1

def fact(self,n):
while n>=1:
num = self.num * n
n = n-1
return num

f = factorial()
ne= factorial.fact(3)
print(ne)

错误

Traceback (most recent call last):
File "F:/python test/oop test3.py", line 13, in ne= factorial.fact(3)
TypeError: fact() missing 1 required positional argument: 'n'

最佳答案

使用您创建的实例来调用该方法:

f = factorial() # creates instance of the factorial class
ne = f.fact(3)

或者使用类本身进行调用而不进行赋值:

ne = factorial().fact(3) # < parens ()
print(ne)

您还有一个错误,您应该使用 self.num ,否则您将始终得到 1 作为答案,因此:

class Factorial: # uppercase
def __init__(self):
self.num = 1
def fact(self, n):
while n >= 1:
self.num = self.num * n # change the attribute self.num
n -= 1 # same as n = n - 1
return self.num

如果你不返回,你的方法将返回 None,但你仍然会增加 self.num,所以如果你不想返回,但想在调用该方法后查看 self.num 的值,你可以访问直接属性:

class Factorial:
def __init__(self):
self.num = 1

def fact(self, n):
while n >= 1:
self.num = self.num * n
n -= 1

ne = Factorial()

ne.fact(5) # will update self.num but won't return it this time
print(ne.num) # access the attribute to see it

关于python - 如何修复这个 OOP 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28539443/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com