定义带有多个关键字参数的python类

时间:2012-10-03 20:32:57

标签: python

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

我的代码如下所示:

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 个答案:

答案 0 :(得分:2)

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

不确定你在使用val1和val2做什么...错误告诉你那些变量不存在...所以你不能使用它们......所以让它们存在或做别的事情...... < / p>

答案 1 :(得分:1)

使val1和val2成为一个字符串。作为变量,它们没有定义。如果它们只是占位符,则使用其他人建议的无。

答案 2 :(得分:1)

在定义班级val1之前,您需要定义val2test

val1 = 1
val2 = 3.141592653

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

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

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

再次val1val2定义之前定义test ...

答案 3 :(得分:0)

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