我需要定义一个将采用多个关键字参数的类。
我的代码如下所示:
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
未定义。什么是正确的方法?
答案 0 :(得分:2)
def __init__(self,parm1=None,parm2=None):...
不确定你在使用val1和val2做什么...错误告诉你那些变量不存在...所以你不能使用它们......所以让它们存在或做别的事情...... < / p>
答案 1 :(得分:1)
使val1和val2成为一个字符串。作为变量,它们没有定义。如果它们只是占位符,则使用其他人建议的无。
答案 2 :(得分: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
再次val1
和val2
定义之前定义test
...
答案 3 :(得分:0)
当函数为def
时函数参数默认值必须存在,因为它们的值的副本在那时被存储为函数编译代码的一部分,而不是每次调用函数时都存储。通常,None
用作声明中的默认值,然后在函数体中检测到,它将被实际(可能是动态计算的)默认值替换。