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