可用代码:
class Fractional:
#create fractional
def __init__(self, integer, numerator, denominator):
if integer == None:
self.integer = 0
else:
self.integer = integer
if numerator == None:
self.numerator = 0
elif numerator < 0 and integer != 0:
raise TypeError('Numerator must be more than 0')
else:
self.numerator = numerator
if denominator == None and numerator != None:
raise TypeError('You must enter denominator')
elif denominator == None and numerator == None:
return integer
elif denominator <= 0:
raise TypeError('Denominator must be more than 0')
else:
self.denominator = denominator
最初,我认为没有传递给函数的参数会得到值 None,因此,我这样做了 if / elif / else。但最后,如果我只传递一个参数(它是整数)(例如Fractional(2):),那么代码会像这样发誓:
Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: __init__() missing 2 required positional arguments: 'numerator' and 'denominator'
据我了解,您不能像那样摆脱 None 。我试着用同样的方式写作is,但显然,这是来自另一个草原,也没有帮助我。告诉我如何解决这个问题,这样你就可以在函数中只输入一个参数而忽略另外两个。
提前致谢。
您需要在函数定义中设置默认参数。你可以这样做:
此外,您还有另一个错误。该代码
return integer将导致错误,因为 该方法__init__不应返回除None您可以指定默认值: