我在尝试传递一个空参数时遇到问题,有人可以向我解释为什么我的代码无法正常工作。我有一个数学测试文件通过我的数学库文件,但是我的lib文件无法读取()代码。当我运行代码时,它说init()缺少1个必需的位置参数:'y'
import MathLib as math
math test:
if __name__ == '__main__':
math_obj1 = math.MyMathLib(2.0)
math_obj2 = math.MyMathLib(-0.5)
math_obj3 = math.MyMathLib() # this should give 0.0
print("Math obj1 value = ",math_obj1.get_curr_value() )
print("Math obj2 value = ",math_obj2.get_curr_value() )
print("Math obj3 value = ",math_obj3.get_curr_value() )
import math
class MyMathLib:
def __init__(self, y,):
self.y = y
if self == None:
value == 0.0
如前所述,您对__init__()
函数的定义将y
作为必需参数。
如果您希望它是可选的,并且默认值为零,则以这种方式编写:
class MyMathLib:
def __init__(self, y=0.0):
self变量实际上不是类方法中的可传递参数(我建议您再看一下python classes)。 init函数中的第一个(也是唯一)可传递的参数是y
。由于y
没有默认变量,因此必须传递y
的值,或为其提供默认值:
def __init__(self, y=0.0):
self.y = y
此外,我不确定您要通过此行实现什么,这没有任何意义:
if self == None:
value == 0.0
value
仅在init函数中是本地的,也许您是说self.value
?即使这样,self也永远不会是None
(除非您在方法中分配了self = None
),所以该语句永远不会触发。最重要的是,您使用了一个双==
而不是=
。
您必须在__init__
中设置默认值
def __init__(self, y=0.0):
self.y = y
然后您不必检查None
或使用None
def __init__(self, y=None):
self.y = y
if self.y is None:
self.y = 0.0
如果要识别有人使用了MyMathLib()
或MyMathLib(0.0)
,这可能会很有用>
这是因为您的__init__
requires
类MyMathLib: def init