0

我需要定义一个将采用多个关键字参数的类。

我的代码如下所示:

class test1:
    def __init__(self,parm1=val1, parm2=val2):
        self.x = parm1
        self.y = parm2
        print('parm1',self.x)


def main():
    x = test1(1,2)

但我得到一个val1未定义的错误。什么是正确的方法?

4

4 回答 4

2
def __init__(self,parm1=None,parm2=None):...

不确定你在用 val1 和 val2 做什么......错误告诉你这些变量不存在......所以你不能使用它们......所以让它们存在或做其他事情......

于 2012-10-03T20:35:36.740 回答
1

使 val1 和 val2 成为字符串。作为变量,它们没有被定义。如果它们只是占位符,请按照其他人的建议使用 None 。

于 2012-10-03T20:35:42.330 回答
1

您需要在定义类之前val1定义和:val2 test

val1 = 1
val2 = 3.141592653

class test(object):
    def __init__(self, param1=val1, param2=val2):
        self.x = param1
        self.y = param2

这种方法可以有其优点(例如,如果val1并且val2应该是从环境中读取的一些通用默认值......),但不是真正可读的。最好使用类似的东西:

class test(object):
    def __init__(self, param1=None, param2=None):
        if param1 is None:
            self.x = val1
        else: 
            self.x = val2

where 再一次,val1并且val2在定义之前定义test...

于 2012-10-03T21:28:13.763 回答
0

当函数被调用时,函数参数默认值必须存在,def因为它们的值的副本在当时存储为函数编译代码的一部分,而不是在每次调用函数时都存储。通常,None在声明中用作默认值,然后在函数体中检测到它被实际(可能是动态计算的)默认值替换。

于 2012-10-03T21:37:15.360 回答