每次打电话给我时,我都会尝试获取新的随机名称。 我将其定义为
def namemethod():
return ''.join(random.choice(string.lowercase) for x in range(5))
class Test(object):
def __init__(self, name=namemethod()):
self.name = name
我正在调用Test
类来循环获取新名称,但我一直得到相同的名称,是不是要调用init
方法并获取新的随机名称?
for i in range(5):
person = Test()
print person.name
为什么person = Test()
每次都没有调用namemethod
?
答案 0 :(得分:7)
在此代码中:
class Test(object):
def __init__(self, name=namemethod()):
self.name = name
默认参数
name=namemethod()
仅对整个类进行一次评估(默认参数始终只被评估一次)
您可能想要做的是使用name=None
作为name
参数的默认值。在__init__()
中,您可以执行以下操作:
class Test(object):
def __init__(self, name=None):
if name is None:
name = namemethod()
self.name = name
答案 1 :(得分:3)
在您的代码中,var append = file => content => fsp.appendFile(file, JSON.stringify(content));
默认参数将被调用name=namemethod()
您可以使用以下方式实现您想要的行为:
namemethod