如何让python读取()为0?

问题描述 投票:0回答:5

我在尝试传递一个空参数时遇到问题,有人可以向我解释为什么我的代码无法正常工作。我有一个数学测试文件通过我的数学库文件,但是我的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 
python parameters variable-assignment
5个回答
1
投票

如前所述,您对__init__()函数的定义将y作为必需参数。

如果您希望它是可选的,并且默认值为零,则以这种方式编写:

class MyMathLib:
    def __init__(self, y=0.0):

1
投票

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),所以该语句永远不会触发。最重要的是,您使用了一个双==而不是=


0
投票

您必须在__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),这可能会很有用>


0
投票

这是因为您的__init__ requires


-1
投票

类MyMathLib: def init

© www.soinside.com 2019 - 2024. All rights reserved.